Desarrollo de Aplicaciones Web Con ASP .NET 2.0. Aspectos Avanzados (Ejemplo)

download Desarrollo de Aplicaciones Web Con ASP .NET 2.0. Aspectos Avanzados (Ejemplo)

of 36

Transcript of Desarrollo de Aplicaciones Web Con ASP .NET 2.0. Aspectos Avanzados (Ejemplo)

Desarrollo de aplicaciones web con ASP .NET 2.0. Aspectos avanzados

ngel Esteban

SipnosisEste texto est dedicado a la versin de ASP .NET que ofrece Microsoft dentro de su entorno .NET Framework 2.0. Se abordan los aspectos ms avanzados relacionados con el desarrollo de aplicaciones Web basadas en ASP .NET 2.0 como pueden ser: la construccin de servicios Web, implementacin controles Web de servidor y controles de usuario, WebParts, Master Pages, temas y skins, distribucin y administracin de aplicaciones Web, caractersticas de internacionalizacin, etc. Se requiere tener algn conocimiento previo del desarrollo de aplicaciones Web con ASP .NET 2.0. Los lenguajes de programacin utilizados a lo largo del texto son Visual Basic .NET y C#.

Angel Esteban (Madrid, 1975) Ingeniero Tcnico en Informtica de Gestin (Universidad Politcnica de Madrid), con las siguientes titulaciones de Microsoft: MCSD, MCAD y MCTS (en SQL Server 2005). Trabaja como Software Architect en Alhambra-Eidos. Experto en el diseo y desarrollo de aplicaciones Web basadas en ASP .NET. Autor de varios cursos virtuales en www.elcampusdigital.com.

LuarnaDesarrollo de Aplicaciones web con ASP .NET 2.0 Aspectos avanzados Angel Esteban Nez y Alhambra Eidos De esta edicin: 2009, Luarna Ediciones, S.L.

www.luarna.com

Madrid, noviembre de 2009

ISBN: 978-84-92684-49-6 Versin 1.0 (20-11-2009)

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.

Desarrollo de aplicaciones web con ASP .NET 2.0. Aspectos avanzadosngel Esteban Nez

IndiceNovedades de ASP .NET 2.0-I ........................................................................................................ 10 Introduccin .................................................................................................................................. 10 Lenguajes de programacin ........................................................................................................... 12 Recorrido por las distintas versiones de ASP ................................................................................. 12 Nuevos controles Web de servidor ................................................................................................ 15 Controles Web de datos ............................................................................................................. 15 Controles Web de navegacin ................................................................................................... 21 Controles Web de inicio de sesin ............................................................................................. 26 WebParts .................................................................................................................................. 29 Controles Estndar .................................................................................................................... 34 Novedades de ASP .NET 2.0 II ....................................................................................................... 37 Master Pages ................................................................................................................................. 37 Temas y Skins ............................................................................................................................... 43 Personalizacin ............................................................................................................................. 47 Internacionalizacin ...................................................................................................................... 50 Nuevo modelo de separacin de cdigo ......................................................................................... 54 PostBack entre distintas pginas .................................................................................................... 56 Nuevos eventos de las pginas ASPX ............................................................................................ 56 Soporte para manejar el foco de la pgina ......................................................................................57 Nuevas caractersticas del cdigo de cliente ..................................................................................57 Directorios de una aplicacin ASP .NET ....................................................................................... 58 Nueva sintaxis...............................................................................................................................59 Nuevas directivas de las pginas ASPX ......................................................................................... 60 Distribucin de la aplicacin ......................................................................................................... 60 Visual Studio 2005........................................................................................................................ 61 Precompilacin de pginas ............................................................................................................ 61 Mejora del ViewState.................................................................................................................... 62 API de configuracin .................................................................................................................... 63 Consola MMC de administracin .................................................................................................. 63 Soporte para 64 bits ......................................................................................................................64 Material necesario .........................................................................................................................64 Elementos comunes del desarrollo de aplicaciones Web con ASP .NET 2.0 I............................... 66 Introduccin .................................................................................................................................. 66 Sintaxis bsica de ASP .NET ........................................................................................................ 67 Web Forms ................................................................................................................................... 70 Controles HTML y controles Web de servidor .............................................................................. 72 Eventos de una pgina ASPX ........................................................................................................ 76 Separacin de cdigo .................................................................................................................... 80 Directivas de las pginas ASPX ....................................................................................................82 Eventos de los controles Web de servidor ...................................................................................... 83 Configuracin de las aplicaciones ASP .NET ................................................................................ 90 Elementos comunes del desarrollo de aplicaciones Web con ASP .NET 2.0 II ............................. 93 Introduccin .................................................................................................................................. 93 El API Focus................................................................................................................................. 93 Cross-Page PostBack .................................................................................................................... 97 Aplicando estilos a los controles Web ......................................................................................... 102 Aadiendo controles Web en tiempo de ejecucin ....................................................................... 107 Callbacks de cliente .................................................................................................................... 114 Directorios especiales de la aplicacin ASP .NET ....................................................................... 119 Los directorios Bin y App_Code de la aplicacin ........................................................................ 121 Pgina |5

Master Pages ................................................................................................................................. 124 Introduccin................................................................................................................................ 124 Aadiendo una pgina maestra .................................................................................................... 125 Asociando pginas maestras ........................................................................................................ 128 Creando la pgina de contenido ................................................................................................... 130 Accediendo a la pgina maestra................................................................................................... 136 Indicando contenido por defecto.................................................................................................. 142 Asignacin de la pgina maestra en tiempo de ejecucin ............................................................. 144 Pginas maestras anidadas........................................................................................................... 146 Eventos de las pginas maestras .................................................................................................. 149 Caso Prctico: Planteamiento ...................................................................................................... 153 Temas y Skins ............................................................................................................................... 154 Introduccin................................................................................................................................ 154 Aplicando temas ......................................................................................................................... 155 Utilizando skins .......................................................................................................................... 159 Pginas maestras y temas ............................................................................................................ 169 Caso Prctico: Planteamiento ...................................................................................................... 171 Creacin y utilizacin de controles de usuario ............................................................................. 172 Introduccin................................................................................................................................ 172 Controles de usuario.................................................................................................................... 173 La directiva @Register ................................................................................................................ 174 Creando un control de usuario ..................................................................................................... 175 Creando propiedades en los controles de usuario ......................................................................... 179 Eventos en los controles de usuario ............................................................................................. 184 La directiva @Control................................................................................................................. 185 Controles de usuario y el modelo se separacin de cdigo ........................................................... 186 Transformacin de una pgina ASPX en control de usuario ......................................................... 189 Caso Prctico: Planteamiento ...................................................................................................... 193 Creacin de componentes y controles Web de servidor............................................................... 194 Introduccin................................................................................................................................ 194 Introduccin a los componentes .NET ......................................................................................... 195 Creacin de componentes .NET .................................................................................................. 197 Creacin de controles ASP .NET de servidor............................................................................... 205 Caso Prctico: Planteamiento ...................................................................................................... 209 Construccin avanzada de controles Web de servidor ................................................................ 211 Introduccin................................................................................................................................ 211 Propiedades de los controles de servidor...................................................................................... 211 Conversin de los valores de atributos ......................................................................................... 214 Utilizando los servicios de HtmlTextWriter ................................................................................. 217 Propiedades de clase ................................................................................................................... 221 Heredando de la clase System.Web.IU.WebControls.WebControl ............................................... 226 Controles compuestos ................................................................................................................. 229 Manteniendo el estado de los controles ........................................................................................ 233 Lanzando eventos ....................................................................................................................... 235 Acceso a datos con ADO .NET ..................................................................................................... 240 Introduccin................................................................................................................................ 240 Beneficios de ADO .NET............................................................................................................ 241 Arquitectura de datos desconectados ........................................................................................... 242 DataSet ................................................................................................................................... 243 ADO .NET y XML ................................................................................................................. 244 Una visin general de ADO .NET ............................................................................................... 244 Pgina |6

Las clases de ADO .NET ............................................................................................................ 246 Estableciendo la conexin. Los objetos Connection ..................................................................... 248 Los objetos Command................................................................................................................. 251 Los objetos DataReader .............................................................................................................. 258 El objeto DataSet ........................................................................................................................ 262 Los objetos DataAdapter ............................................................................................................. 267 Caso Prctico: Planteamiento ...................................................................................................... 271 Creacin de servicios Web ............................................................................................................ 272 Introduccin................................................................................................................................ 272 Introduccin a los servicios Web ................................................................................................. 273 Arquitectura de un servicio Web ................................................................................................. 274 Construccin de servicios Web.................................................................................................... 275 Comprobando el funcionamiento del servicio Web ...................................................................... 280 La directiva @WebService .......................................................................................................... 284 Los atributos WebService y WebMethod..................................................................................... 284 La clase WebService ................................................................................................................... 290 Servicios Web de acceso a datos ................................................................................................. 296 Caso Prctico: Planteamiento ...................................................................................................... 300 Utilizacin de servicios Web ......................................................................................................... 301 Introduccin................................................................................................................................ 301 Las fases de la puesta en marcha de un servicio Web ................................................................... 302 Descripcin y localizacin de servicios Web ............................................................................... 303 Las clases proxy.......................................................................................................................... 305 Creacin de clases proxy con Visual Studio .NET ....................................................................... 306 Creacin de clases proxy con la utilidad WSDL.EXE .............................................................. 319 Caso Prctico: Planteamiento ...................................................................................................... 325 WebParts I: Conceptos bsicos y catlogos ................................................................................. 326 Introduccin................................................................................................................................ 326 WebPartManager y WebPartZone ............................................................................................... 327 Modos del control WebPartManager ........................................................................................... 332 Controles WebPart ...................................................................................................................... 336 Catlogos WebPart...................................................................................................................... 342 PageCatalogPart ...................................................................................................................... 343 DeclarativeCatalogPart............................................................................................................ 348 ImportCatalogPart ................................................................................................................... 351 WebParts II: Modos de edicin y conexin. ................................................................................. 354 Introduccin................................................................................................................................ 354 Modo de edicin ......................................................................................................................... 354 ApareanceEditorPart y LayoutEditorPart ................................................................................. 357 BehaviorEditorPart.................................................................................................................. 361 PropertyGridEditorPart ........................................................................................................... 365 Modo de conexin ...................................................................................................................... 374 Caso Prctico: Planteamiento ...................................................................................................... 381 WebParts III: Creacin de WebParts personalizados ................................................................. 382 Introduccin................................................................................................................................ 382 Definiendo el WebPart ................................................................................................................ 383 Definicin de las propiedades del WebPart.................................................................................. 384 Construccin del WebPart ........................................................................................................... 385 Utilizando el WebPart ................................................................................................................. 388 Definiendo verbos para el WebPart ............................................................................................. 392 Restableciendo la configuracin .................................................................................................. 397 Pgina |7

Personalizacin ............................................................................................................................. 399 Introduccin................................................................................................................................ 399 Creacin de propiedades de personalizacin ................................................................................ 400 Agrupacin de propiedades de personalizacin............................................................................ 405 Definicin de tipos ...................................................................................................................... 409 Migracin de usuarios annimos ................................................................................................. 414 Internacionalizacin ..................................................................................................................... 416 Introduccin................................................................................................................................ 416 Creacin de ficheros de recursos ................................................................................................. 417 Carpetas especiales ................................................................................................................. 417 Internet Explorer: Preferencias de idioma ................................................................................ 418 Fichero de recursos local ......................................................................................................... 418 Fichero de recursos global ....................................................................................................... 425 Manejando el idioma en tiempo de ejecucin .............................................................................. 426 Estableciendo el idioma .............................................................................................................. 427 Entrada/Salida con ficheros y streams ......................................................................................... 431 Introduccin................................................................................................................................ 431 Unidades de disco ....................................................................................................................... 432 Directorios .................................................................................................................................. 437 Ficheros ...................................................................................................................................... 446 Rutas .......................................................................................................................................... 454 Lectura y escritura de ficheros con streams .................................................................................. 457 Caso Prctico: Planteamiento ...................................................................................................... 461 Distribucin de aplicaciones Web................................................................................................. 462 Introduccin................................................................................................................................ 462 Instalacin de Visual Studio 2005 ............................................................................................... 463 El entorno de trabajo ................................................................................................................... 467 Mtodos de distribucin de una aplicacin Web .......................................................................... 468 XCopy .................................................................................................................................... 468 Copiar sitio Web ..................................................................................................................... 472 Publicar sitio Web ................................................................................................................... 476 Programa de instalacin .......................................................................................................... 482 Caso Prctico: Planteamiento ...................................................................................................... 487 Configuracin de Internet Information Server............................................................................ 488 Introduccin................................................................................................................................ 488 El servidor Web Internet Information Server ............................................................................... 489 Instalando IIS .............................................................................................................................. 489 El administrador de Servicios de Internet Information Server ...................................................... 491 Elementos de IIS ......................................................................................................................... 494 Administracin del sitio Web ...................................................................................................... 494 Sitio Web ................................................................................................................................ 495 Directorio particular ................................................................................................................ 496 Documentos ............................................................................................................................ 497 Errores personalizados ............................................................................................................ 498 Rendimiento............................................................................................................................ 498 Seguridad de directorios .......................................................................................................... 499 Filtros ISAPI ........................................................................................................................... 499 Encabezados HTTP ................................................................................................................. 500 Extensiones de servidor ........................................................................................................... 501 ASP .NET ............................................................................................................................... 503 La aplicacin Web ...................................................................................................................... 504 Pgina |8

Administracin y Configuracin de Aplicaciones Web ............................................................... 509 Introduccin................................................................................................................................ 509 Una configuracin basada en XML ............................................................................................. 510 Aplicando la configuracin ......................................................................................................... 511 Formato de los ficheros de configuracin .................................................................................... 512 Seccin de manejadores .......................................................................................................... 513 Seccin de valores de configuracin ........................................................................................ 514 Tareas comunes de configuracin ................................................................................................ 516 Configuracin general ............................................................................................................. 517 Configuracin de la pgina ...................................................................................................... 517 Configuracin de la aplicacin ................................................................................................ 519 Cadenas de conexin ............................................................................................................... 519 Configuracin de la sesin ...................................................................................................... 521 Configuracin de trazas ........................................................................................................... 522 Errores personalizados ............................................................................................................ 523 Web Services .......................................................................................................................... 525 Globalizacin .......................................................................................................................... 526 Compilacin............................................................................................................................ 526 Identidad ................................................................................................................................. 529 Manejadores HTTP ................................................................................................................. 530 Modelo de proceso .................................................................................................................. 534 Indicando la configuracin para un recurso concreto ................................................................... 536 Bloqueando valores de configuracin .......................................................................................... 537 Herramientas de configuracin .................................................................................................... 538 Sitio Web de Administracin................................................................................................... 538 Pestaa ASPNET (ASP .NET MMC Snapin) ............................................................................ 540 Caso Prctico: Planteamiento ...................................................................................................... 543 Resolucin Casos prcticos ........................................................................................................... 544 Captulo 5 ................................................................................................................................... 544 Captulo 6 ................................................................................................................................... 549 Captulo 7 ................................................................................................................................... 553 Captulo 8 ................................................................................................................................... 557 Captulo 10 ................................................................................................................................. 561 Captulo 11 ................................................................................................................................. 564 Captulo 12 ................................................................................................................................. 567 Captulo 14 ................................................................................................................................. 571 Captulo 18 ................................................................................................................................. 574 Captulo 19 ................................................................................................................................. 577 Captulo 21 ................................................................................................................................. 578

Pgina |9

Novedades de ASP .NET 2.0-IIntroduccinASP NET 2.0 es la tecnologa para el desarrollo de aplicaciones Web que ponemos encontrar en la nueva versin que ofrece Microsoft de su plataforma de desarrollo Microsoft .NET Framework 2.0. Este texto est pensado tanto para aquellos lectores que ya conocen ASP .NET 1.x, u otra versin previa, como para los que no conocen nada del entorno de desarrollo de las pginas activas de Microsoft. Nuestro objetivo va a ser centrarnos en la tecnologa ASP .NET, aunque comentaremos de brevemente, y cuando sea necesario, algunos conceptos generales de la plataforma .NET (.NET Framework), ya que no debemos olvidar que es la plataforma sobre la que se van a ejecutar las aplicaciones Web desarrolladas con pginas ASP .NET, es decir, las pginas ASP .NET no se van a ejecutar directamente sobre un sistema operativo determinado, sino que lo van a hacer sobre la nueva plataforma que ofrece Microsoft. La plataforma .NET ofrece una serie de herramientas y tecnologas necesarias para construir y desarrollar aplicaciones Web, as pues, las pginas ASP .NET se van a ejecutar dentro del entorno de ejecucin que nos facilita el .NET Framework. Podramos decir que ASP .NET es una parte de la plataforma .NET, y es esta parte la que se va a tratar en el presente texto. Para aquellos lectores que no conozcan la tecnologa de desarrollo de las pginas ASP en cualquiera de sus versiones, voy a realizar una definicin muy sencilla de lo que consiste la filosofa de la programacin de aplicaciones Web con pginas ASP o ASPX. P g i n a | 10

La filosofa de ASP .NET resulta muy sencilla, en pocas palabras se puede definir de la siguiente forma: las pginas ASP .NET, tambin llamadas pginas activas, son pginas que contienen cdigo HTML, script de cliente y un cdigo que se ejecuta en el servidor, dando como resultado cdigo HTML. Por lo tanto al cargar una pgina ASP .NET en nuestro navegador, en realidad no estamos cargando la pgina ASP .NET como tal, sino el resultado de la ejecucin de la pgina, es decir la salida de la pgina ASP .NET, y como se ha apuntado anteriormente se trata de cdigo HTML. Es decir, son pginas que se ejecutan en el servidor enviando como resultado al cliente cdigo HTML. El anterior prrafo est extrado completamente de un antiguo texto dedicado a ASP 3.0, el titulado Programacin para aplicaciones para Internet con ASP 3.0, y es perfectamente aplicable a ASP .NET 2.0, pero este entorno de desarrollo de aplicaciones Web, va ms all presentando un completo entorno mucho ms elaborado y complejo, con lo que la afirmacin de prrafo anterior se quedara muy corta, ya que nicamente define uno de los aspectos de las pginas ASP .NET. De forma ms genrica, y acertada, podemos definir ASP .NET como el entorno de desarrollo incluido en la plataforma .NET de Microsoft, que nos permite desarrollar completas aplicaciones Web que se ejecutarn sobre el entorno ofrecido por el .NET Framework. A lo largo de este texto iremos descubriendo paso a paso las distintas posibilidades (que son bastante amplias) que nos ofrece ASP .NET, apoyndonos siempre en la nueva herramienta de Microsoft Visual Studio 2005. Una vez realizada una definicin ms o menos de lo que son las pginas ASP .NET volvamos en concreto a tratar sobre la nueva versin de ASP .NET. Esta nueva versin de ASP .NET no ofrece unos cambios tan profundos como supuso el cambio de ASP 3.0 a ASP .NET 1.0, esta nueva versin de las pginas ASPX (as se denominan tambin a las pginas ASP .NET, utilizando su extensin), es una evolucin lgica de ASP .NET 1.x (utilizamos 1.x para referirnos a las dos versiones anteriores de ASP .NET la 1.0 y la 1.1) Por lo tanto ASP .NET 2.0 es la nueva versin que ofrece el .NET Framework para el desarrollo de aplicaciones Web, ya sean basadas en Internet, Intranet o Extranet. Microsoft tambin ofrece una nueva herramienta integral de desarrollo, Visual Studio 2005. Ser con esta herramienta con la que desarrollaremos nuestras aplicaciones Web y por la tanto la comentaremos tambin en este texto. Como curiosidad comentar al lector que la nueva versin del .NET Framework de Microsoft recibi el nombre en clave (code-name) de Whidbey y la versin 2.0 de ASP .NET lleg a denominarse ASP .NET Whidbey. No veremos Visual Studio 2005 de forma ntegra, slo veremos la parte que nos interese y que nos afecte a la hora de desarrollar aplicaciones Web con ASP .NET 2.0. Esta parte de Visual Studio 2005 (VS 2005) se denomina Microsoft Visual Web Developer 2005. Esta nueva versin de Visual Studio nos ofrece un entorno de desarrollo muy cmodo para crear nuestras aplicaciones Web a travs de ayudas y asistentes. Por lo tanto debido a todo lo anterior recomiendo al lector que para el correcto seguimiento del texto y de los ejemplos que en el aparecen, instale en su equipo Visual Studio 2005, ya que esta ser nuestra herramienta de trabajo. A lo largo del texto, segn sea conveniente, se comentar el uso de Visual Studio 2005. En este captulo, adems de realizar una introduccin a ASP .NET 2.0, tambin se comentarn las novedades que presenta respecto a su versin anterior ASP .NET 1.x.

P g i n a | 11

Lenguajes de programacinASP .NET 2.0 no es un lenguaje de programacin, es un entorno de programacin o tecnologa de desarrollo, pero no es un lenguaje. De hecho ASP .NET soporta distintos lenguajes, en el presente texto vamos a utilizar los lenguajes C# (CSharp) y Visual Basic .NET, ya que son los lenguajes ms populares entre todos los que soportan las pginas ASP .NET. El cdigo intermedio es una caracterstica comn que poseen todas las tecnologas englobadas en la estrategia .NET de Microsoft, a la que lgicamente pertenece ASP .NET. Las pginas ASP .NET cuando reciben la primera peticin se compilan automticamente a un lenguaje intermedio que es conocido como Common Language Runtime, es decir, es un lenguaje comn al que compilan todos los lenguajes que utilicemos en nuestras pginas ASP .NET, generando el mismo cdigo, ya sea Visual Basic .NET, C# o JScript. Gracias a esta caracterstica podemos obtener grandes ventajas en lo que a rendimiento en tiempo de ejecucin se refiere, ya que la compilacin de las pginas slo se produce en la primera peticin que se realiza sobre la pgina, o bien cuando el cdigo fuente de la misma se ha modificado y necesita por lo tanto actualizarse, adems el resultado de esta compilacin permanece en cach para poder ser reutilizada. Los ejemplos de cdigo fuente que se mostraran en el texto se ofrecern tanto en C# como en VB .NET. Suponemos que el lector conoce la sintaxis de alguno de estos dos lenguajes, ya que abordar un lenguaje de programacin queda fuera de los objetivos de este texto, que como sabemos todos trata sobre el desarrollo avanzado de aplicaciones Web con ASP .NET 2.0. Las nuevas versiones de estos lenguajes que podemos encontrar dentro del .NET Framework 2.0 se denominan Visual Basic 2005 y C# 2.0.

Recorrido por las distintas versiones de ASPHasta la fecha nos encontramos con seis versiones de la tecnologa de las pginas activas de servidor de Microsoft, es decir, de ASP (Active Server Pages). Vamos a realizar un recorrido histrico a travs de ASP, desde ASP 1.0 hasta ASP .NET 2.0. Este apartado se puede tomar a modo de cultura general. La primera versin de las pginas activas (ASP 1.0), se incorpor como un aadido o ampliacin al servidor Web del sistema operativo Microsoft Windows NT Server 4.0 llamado Internet Information Server 3.0 (IIS 3.0). Este servidor Web era interesante pero todava era demasiado rudimentario y presenta limitaciones y problemas. La primera versin de ASP era bastante interesante ya que se pasaba de la complejidad de los CGIs (Common Gateway Interface) a la sencillez de las pginas activas. ASP 1.0 supuso el inicio del desarrollo de aplicaciones Web con productos basados en tecnologa Microsoft. La versin 2.0 de Active Server Pages la encontramos en el servidor Web de Microsoft Internet Information Server 4 (IIS 4), y en el servidor Personal Web Server 4 (PWS 4). Ambos servidores los podamos instalar desde la extensin del sistema operativo de Windows NT denominada Windows NT 4.0 Option Pack, o ms comnmente Option Pack. Esta extensin del sistema operativo no slo era aplicable a Windows NT, sino que tambin la podamos utilizar para Windows 95/98. Se debe sealar que el servidor IIS 4 es el servidor Web para plataformas Windows NT Server 4.0, y el servidor Personal Web Server 4.0 es el servidor Web para plataformas Windows 95/98 y Windows NT Workstation 4.0. IIS 4 adems de ofrecer la nueva versin de la tecnologa ASP permite configurar y administrar de forma sencilla nuestras aplicaciones ASP. Adems la figura de la aplicacin ASP se encuentra mucho

P g i n a | 12

ms clara que en la versin 1.0 de las pginas ASP, el servidor Web nos indicar claramente el alcance de una aplicacin ASP determinada. ASP 2.0 es una clara y necesaria evolucin de ASP 1.0 incorporando la posibilidad de realizar pginas ASP transaccionales, aadiendo para ello un nuevo objeto integrado denominado ObjectConext (objeto de contexto). ASP 2.0 ofrece un entorno ms robusto y potente que la versin anterior para el desarrollo de aplicaciones Web. Ms tarde apareci ASP 3.0. Para poder utilizar ASP 3.0 tenemos que disponer de cualquiera de las versiones del sistema operativo Windows 2000 (Professional, Server y Advanced Server). En este caso no se trata nicamente de una nueva versin del servidor Web sino tambin de una nueva versin del sistema operativo Windows. ASP 3.0 se encuentra disponible dentro de Windows 2000 en cualquiera de sus versiones. Dentro de Windows 2000 encontramos el componente Internet Information Services o Internet Information Server, que como todos los lectores sospechan es la nueva versin del servidor Web de Microsoft Internet Information Server. Al instalar Internet Information Services 5.0 (IIS 5.0) dotamos a nuestro servidor de todas las funcionalidades de un potente servidor Web, y dentro de estas funcionalidades se encuentra ASP 3.0. ASP 3.0 podemos decir que es la evolucin lgica de ASP 2.0, no supone ningn cambio radical, ofrece una serie de mejoras y novedades. Se aade un nuevo objeto integrado llamado ASPError, este nuevo objeto es utilizado para el tratamiento de errores. Y por fin llegamos a la aparicin del .NET Framework de Microsoft, que va a contener una nueva versin de ASP, ASP .NET 1.0, en este caso los cambios respecto a ASP 3.0 si que son notables, tanto que en muchos casos podemos considerar que se parecen en poco, ni siquiera podramos considerar que se trata de ASP 4.0, ya que los cambios van ms all. ASP .NET plantea una nueva forma de desarrollar aplicaciones Web dentro del entorno ofrecido por el .NET Framework. En resumen, una nueva forma de programar aplicaciones Web. Con ASP .NET 1.0 aparece la herramienta de desarrollo Visual Studio 2002 que contiene la versin del 1.0 .NET Framework. ASP .NET es completamente compatible con ASP, podemos tener aplicaciones Web basadas en ASP y ASP .NET funcionando en el mismo servidor Web, que ser Internet Information Server 5.0, las pginas ASP tienen la extensin .ASP y son procesadas por la DLL ASP.DLL y sin embargo las pginas ASP .NET poseen la extensin .ASPX y son procesadas por el entorno de ejecucin .NET Framework, que las transforma en el cdigo intermedio. Como curiosidad comentar a los lectores que en las primeros pasos de la plataforma .NET (beta 1 y versiones preliminares previas) ASP .NET se denominaba ASP+ y la propia plataforma posea la denominacin de NGWS (New Generation Windows Services, Nueva Generacin de Servicios Windows) . Despus apareci la versin 1.1 del .NET Framework y con el la nueva versin de las pginas ASPX, ASP .NET 1.1, que como ocurra con ASP 2.0 y ASP 3.0, esta nueva versin incluye leves mejoras y cambios. El Framework 1.1 aparece ya dentro del sistema operativo Windows 2003 Server y se instala como una parte perfectamente integrada. Y dentro de este nuevo sistema operativo tenemos el servidor Web IIS 6.0, que va a ser el encargado de albergar las aplicaciones Web basadas en ASP .NET. Al igual que suceda en la versin anterior, tambin aparece una nueva versin de la herramienta de desarrollo Visual Studio, en este caso se trata de la versin 2003. Es ya con la nueva versin del Framework, la 2.0, cuando aparece ASP .NET 2.0, y al igual que suceda con ASP 3.0 y ASP .NET 1.0, es perfectamente compatible con las versiones 1.x de las pginas activas, lo nico que tenemos que hacer es instalar la nueva versin del Framework.

P g i n a | 13

Desde el propio servidor Web IIS 6.0, en el caso de Windows 2003 Server, y desde el servidor Web IIS 5.1, en el caso del sistema operativo Windows XP Professional, a la hora de crear una aplicacin Web nos permite indicar a que versin del Framework pertenece: a la 1.1 o a la 2.0, que se corresponder con la versin de pginas ASPX. Esto lo podemos ver en la siguiente figura.

Figura 1

Ms adelante, en el captulo correspondiente veremos como configurar y administrar una aplicacin Web. Como se puede desprender de la figura anterior, en un mismo servidor Web pueden convivir sin problemas las dos versiones del Framework, la 1.1 y la 2.0, lo mismo sucede con las herramientas de desarrollo, en un mismo equipo puede estar instalado Visual Studio 2003 y Visual Studio 2005 sin ningn tipo de problema ni incompatibilidad, incluso podramos tener instalado Visual Studio 6.0 con Visual InterDev. Y para terminar con el siguiente apartado, como es de suponer tambin tenemos una nueva versin de la herramienta de desarrollo Visual Studio, que es la que vamos a utilizar en este texto y que no es otra que la versin 2005. Como ya se ha adelantado los cambios en esta nueva versin de ASP no son tan dramticos y profundos como los que se dieron con el cambio de versin de ASP 3.0 a ASP .NET 1.0, los lectores que conozcan ASP .NET 1.x lo tendrn bastante sencillo ya que la forma de desarrollar las aplicaciones Web y su filosofa permanecen intactas, sin embargo nos encontraremos con un gran nmero de mejoras y novedades. Este captulo y el siguiente ser muy til para la audiencia conocedora de alguna versin previa de ASP .NET, ya que en un rpido vistazo se de adelantarn todas las novedades, mejoras y cambios que nos ofrece la nueva versin de ASP .NET. Y para los lectores que no conozcan nada de ASP .NET les P g i n a | 14

servir para empezar a ponerse en contacto con el desarrollo de aplicaciones Web y para ver algunas de las funcionalidades que nos ofrece ASP .NET, que sern tratadas en mayor detalle a lo largo de los distintos captulos de este texto. En este captulo se van a comentar las novedades que aporta ASP .NET 2.0 respecto a la versin 1.x, apoyndose en el nuevo entorno .NET Framework 2.0, esta nueva versin de ASP .NET nos ofrece unas potentes caractersticas a la hora de desarrollar aplicaciones Web, pasemos a ver las ms destacadas. El lector no debe preocuparse si no entiende alguno de los conceptos que aqu se comentan, ya que los veremos ms adelante con mayor profundidad, este apartado servir sobretodo a aquellos lectores que ya conozcan ASP .NET 1.x, para ver de un simple vistazo las novedades ms destacables de ASP .NET 2.0.

Nuevos controles Web de servidorEn esta nueva versin de ASP .NET se ofrecen un gran nmero de nuevos controles de servidor, que se podrn utilizar para distintas tareas dentro del desarrollo de una aplicacin Web, tenemos desde controles de acceso a datos hasta controles de navegacin. Para ver la gran cantidad de controles que ASP .NET pone a nuestra disposicin nicamente tenemos que echar un vistazo al cuadro de herramientas de Visual Studio 2005. Podemos ver que aparecen un gran nmero de ellos agrupados por categoras segn su funcionalidad. En la siguiente figura podemos ver los grupos de controles de servidor que nos ofrece ASP .NET 2.0 desde VS 2005.

Figura 2

No se trata nicamente de nuevos controles mejorados, sino que aparecen completas categoras de controles nuevos como pueden ser los controles de inicio de sesin o los de navegacin (denominados por VS 2005 de exploracin). Vamos a comentar brevemente las distintas categoras de nuevos controles de ASP .NET 2.0.

Controles Web de datosEl acceso a datos desde ASP .NET 2.0 ahora se puede realizar en unos pocos pasos de manera muy sencilla, sin la necesidad de escribir ni una sola lnea de cdigo, haciendo uso nicamente de los nuevos controles de acceso a datos. Dentro de estos controles hay dos grupos bien diferenciados, los que nos ofrecen la conexin con las fuentes de datos, denominados controles de fuente u origen de datos (data source controls), como podra ser el control SqlDataSource, y los que nos ofrecen un interfaz de usuario para representar grficamente los datos, denominados controles conectados a datos (data bound controls), como puede ser el control GridView.

P g i n a | 15

ASP .NET 2.0 nos ofrece cinco controles Web de origen de datos, cada uno ser utilizado para un tipo especfico de acceso a datos. A continuacin los comentamos brevemente: SqlDataSource: este control Web nos provee acceso a cualquier fuente de datos de ADO .NET, como puede ser una base de datos en SQL Server, OLEDB, Oracle y ODBC, incluso se puede acceder a bases de datos de Access utilizando el proveedor Microsoft Jet 4.0 de OLEDB, aunque como veremos existe un control de origen de datos especfico para esta tarea. AccessDataSource: se trata del control Web especfico para ofrecer una conexin a una base de datos de Access. Este control hereda del anterior. ObjectDataSource: este otro control representa al conexin a objetos de negocio u otras clases que van a devolver datos. La sintaxis de este control es muy similar al control SqlDataSource, en lugar de utilizar una cadena de conexin, utilizar un nombre de una clase que ser de dnde va a extraer los datos. XmlDataSource: este control se encuentra asociado a los controles de navegacin, y nos ofrece el acceso a ficheros XML. SiteMapDataSource: este ltimo control de origen de datos tambin se utiliza con los controles de navegacin, y lo que nos ofrece es el acceso a la estructura del sitio Web a travs del fichero del mapa del sitio Web (fichero .sitemap).

El segundo grupo de controles Web de datos son los controles enlazados a datos, este grupo de controles van a hacer uso de los controles de origen de datos para mostrar la informacin, es decir, los controles enlazados o conectados a datos nos van a ofrecer el interfaz para presentar de forma intuitiva al usuario los datos provenientes de los orgenes de datos correspondientes, tambin van a permitir que el usuario final pueda interactuar con dichos datos ya sea para consultarlos, modificarlos, eliminarlos o aadir nuevos datos A continuacin pasamos a describir brevemente los controles enlazados a datos que nos ofrece ASP .NET 2.0, para que el lector tenga una visin general de los mismos. Repeater: este control muestra elementos de datos en una lista, por s slo no genera una salida visible para el usuario, para que sea visible se debe utilizar junto con las plantillas. Este control ya exista en ASP .NET 1.x. DataList: similar al control anterior pero permite una mayor personalizacin a la hora de mostrar la informacin en forma de lista. Tambin permite la seleccin y edicin de elementos. Tambin debe utilizarse junto con las plantillas y ya exista en las versiones anteriores de ASP .NET. GridView: este control muestra la informacin en forma de tabla con celdas y columnas, generando el cdigo HTML equivalente a una tabla. Es el ms complejo de los controles enlazados a datos ofreciendo un alto grado de personalizacin y una serie de caractersticas muy interesantes como pueden ser la ordenacin, paginacin, definicin de columnas, edicin, etc., este control en nuevo en ASP .NET 2.0, y viene a sustituir al antiguo DataGrid de ASP .NET 1.x. DetailsView: este control tambin es nuevo en ASP .NET 2.0 y representa un registro de datos cada vez, opcionalmente nos permite ir navegando entre registros. Se utiliza en escenarios de maestro/detalle y tambin es utilizado para editar registros existentes y para crear nuevos registros. FormView: este control tambin aparece en la versin 2.0 de ASP .NET, y sus funciones son muy similares a las del control DetailsView, la diferencia respecto al anterior control es que permite una mayor personalizacin a travs del mecanismo de plantillas. P g i n a | 16

Los controles enlazados a datos se relacionan de una forma muy sencilla con los controles de origen de datos, simplemente asignando a su propiedad DataSourceId el nombre del control de origen de datos. Vamos a empezar a incluir algunos ejemplos de cdigo fuente para que el desarrollo del presente captulo sea ms ameno y no quede nicamente en la mera teora y en una enumeracin de novedades. En este primer ejemplo vamos a mostrar la utilizacin del control enlazado a datos Repeater. Este control es uno de los controles enlazados a datos ms sencillo, no ofrece ningn tipo de salida por si slo, se debe indicar de forma explcita todo el cdigo HTML que deseemos utilizar para presentar los datos, debido a que no genera ninguna salida, es necesario utilizar como mnimo una plantilla ItemTemplate. En este ejemplo, que resulta muy sencillo, se anan los aspectos principales de los controles Web de datos de ASP .NET: la utilizacin de plantillas y Data Binding y controles enlazados a datos en los que su fuente de datos es un control de origen de datos. En este caso el origen de datos es un control SqlDataSource que realiza una sentencia Select especificada en su propiedad SelectCommand. El enlace entre el control Repeater y SqlDataSource se realiza a travs de la propiedad DataSourceId del control Repeater. Se ha utilizado una plantilla de cabecera de la informacin (HeaderTemplate) para definir la cabecera de una tabla, otra de pie (FooterTemplate) para cerrar la definicin de la tabla definida en la plantilla HeaderTemplate. Otra plantilla ms para definir el aspecto de cada elemento (ItemTemplate), en este caso se define como va a ser cada fila de la tabla y una plantilla muy similar que define un aspecto para elementos alternos (AlternatingItemTemplate), es decir, el aspecto de las filas alternas de la tabla. Y en lo referente al mecanismo de Data Binding podemos comentar que en la plantilla se ha utilizado el mtodo Eval() y en la plantilla se ha utilizado el mtodo DataBinder.Eval(), ambos son equivalentes, la diferencia es que el mtodo Eval() aparece en ASP .NET 2.0 como una versin reducida del mtodo DataBinder.Eval(), sin la necesidad de tener que especificar el elemento Container.DataItem, con el mtodo Eval() indicamos directamente el nombre del campo en el que se encuentran los datos que deseamos mostrar. El mtodo Eval() se podr utilizar nicamente dentro de plantillas. La cadena que especifica el formato de salida debe tener los corchetes {} y entre ellos una expresin que define el formato correspondiente, en este ejemplo se ha indicado un formato de fecha y un formato monetario. Todo esto lo podemos apreciar en el Cdigo fuente 1. Pgina sin ttulo Curso Fecha inicio Precio

P g i n a | 17

Cdigo fuente 1

En la Figura 3 podemos ver el resultado de la ejecucin de la pgina ASPX del ejemplo.

Figura 3

Antes de pasar al siguiente grupo de controles que nos ofrece ASP .NET 2.0, vamos a mostrar un ejemplo ms de los controles Web de datos. En concreto vamos a ver la conexin entre los dos nuevos controles DetailsView y GridView. Un uso muy comn del control DetailsView, va a ser utilizarlo en escenarios de listado de datos maestro/detalle. En este caso tendremos que utilizar el control DetailsView en conexin con el control GridView. P g i n a | 18

Al seleccionar una de las filas del control GridView, se cargar el registro completo que le corresponde a la fila seleccionada en el control DetailsView que le hayamos asociado. La forma de asociar el control DetailsView con el control GridView es a travs del control SqlDataSource que hace las funciones del origen de datos del control DetailsView. Veamos como hacerlo. En el control SqlDataSource utilizamos un filtro sobre los datos, es decir, se va a hacer uso de un parmetro para la sentencia Select, y adems este parmetro ser el valor que se ha seleccionado del control GridView. El tipo de este parmetro ser ControlParameter, y en sus propiedades ControlId especificaremos el nombre del control GridView, y en la propiedad PropertyName le indicaremos el valor SelectedValue. Es decir, le estamos indicando al control SqlDataSource que el parmetro que le vamos a indicar al filtro viene de la propiedad SelectedValue de un control GridView. En la Figura 4 se puede ver la forma en la que se ha definido el filtro para el control SqlDataSource que hace las funciones de fuente de datos para el control DetailsView, dnde tabla es el identificador del control GridView.

Figura 4

Lgicamente el control GridView tendr su propio control de origen de datos asociado. El control GridView deber presentar tambin una columna CommandField que permita la seleccin de una fila de los datos, por lo que deber asignarse el valor True a su propiedad ShowSelectButton. Tambin se ha definido un estilo para indicar la fila que se ha seleccionado. En el Cdigo fuente 2 se muestra la forma de conectar el control DetailsView con el control GridView. Ambos controles se han incluido dentro de una tabla de HTML para mostrarse en la pgina uno al lado del otro. En un primer momento el control DetailsView no va a mostrar ningn dato ya que no se ha seleccionado ninguna fila del control GridView, en el momento que se seleccione una fila se mostrarn los detalles del registro correspondiente.

P g i n a | 19

Pgina sin ttulo Cdigo fuente 2

En la Figura 5 se puede ver un ejemplo de ejecucin de esta pgina ASPX. P g i n a | 20

Figura 5

Controles Web de navegacinEn la versin 1.x de ASP .NET ya existan los controles de acceso a datos, en ASP .NET 2.0 aparecen nuevos controles, pero ya exista esta categora, sien embargo, una categora completamente nueva son los controles de navegacin. Los controles de navegacin ofrecen un interfaz de usuario que permite la navegacin a travs de las distintas pginas de un sitio Web as como la presentacin de la informacin de forma jerrquica. Un ejemplo de estos controles es el nuevo control SiteMapPath, que nos permite navegar entre pginas, y el control TreeView, que muestra la informacin de forma jerrquica organizada en hojas, otro control de navegacin sera el control Menu, que nos permite construir mens navegables. Para trabajar de forma ms rpida y sencilla con los controles Web de navegacin o exploracin, tendremos que hacer uso de un fichero especial que va a definir la estructura, el mapa, de nuestro sitio Web. Este fichero va a indicar como se relacionan unas pginas con otras dentro del sitio Web. El fichero del mapa o estructura del sitio Web est estructurado en formato XML. Solo puede existir un fichero de este tipo dentro de una aplicacin. El fichero de mapa del sitio Web ser utilizado directamente por los controles SiteMapPath y SiteMapDataSource, e indirectamente a travs del control SiteMapDataSource, por los controles TreeView y Menu. Para agregar un fichero de mapa de sitio Web a nuestro sitio Web dentro de Visual Studio 2005, deberemos pulsar con el botn derecho del ratn sobre la solucin, dentro del explorador de soluciones, y seleccionar la opcin Agregar Nuevo elemento. En la ventana que aparece se muestran todos los elementos que podemos aadir a la solucin, en este caso seleccionaremos el elemento Mapa del sitio, y lo dejaremos con su nombre por defecto Web.sitemap. Al pulsar el botn Agregar se aadir el mapa del sitio a la solucin. El primer elemento del mapa del sitio va a ser el elemento , que va a ser la raz de toda la estructura del documento XML, y slo podr existir uno de estos elementos. Para cada pgina del sitio Web existir un elemento dentro del mapa del sitio. Estos elementos se tendrn que ir anidando segn la estructura del sitio Web, as por ejemplo si queremos definir una pgina principal para todo del sitio Web, y que todas las dems pginas se P g i n a | 21

encuentren por debajo de la pgina principal, tendremos que definir un elemento que incluya a todos los dems, ya que sern pginas hijas de la anterior. Cada una de las pginas que forman parte de la estructura del sitio Web se las denomina nodos. La idea es construir una estructura jerrquica de pginas. Esto lo veremos ms claro en el siguiente ejemplo que se mostrar de un mapa de un sitio Web que va a corresponder con el de un supermercado online. El elemento presenta los siguientes atributos: title: este atributo representa el ttulo del enlace, la cadena utilizada se mostrar como texto del enlace que se corresponda con la pgina. description: la descripcin que indiquemos en este atributo ser utilizada para la propiedad ToolTip del enlace que se generar. url: en este atributo se indicar la direccin en la que se encuentra la pgina dentro del sitio Web. Esta direccin siempre ser relativa.

A continuacin vamos a crear un mapa de un sitio para un caso concreto de ejemplo, en este caso se quiere definir un fichero Web.sitemap para un sitio Web que contiene un supermercado online. Supongamos que deseamos que nuestro sitio Web tenga la siguiente estructura. Inicio ---Alimentacin ------Carnes ------Pescados ------Frutas y verduras ------Congelados ---------Platos precocinados ---------Helados ---------Pizzas ---Droguera ------Productos limpieza ------Aseo personal ---Bebidas -----Alcohlicas -----No alcohlicas

Como podemos observar tenemos una pgina de inicio que ser la raz del sitio Web, de esta forma el elemento que se corresponda con la pgina Inicio deber contener a los dems elementos . Segn la estructura anterior deberamos tener un mapa de sitio Web tal como el que aparece en el Cdigo fuente 3.

P g i n a | 22

Cdigo fuente 3

A continuacin vamos a pasar a comentar brevemente los distintos controles que aparecen en este nuevo grupo. SiteMapPath: este control se alimenta directamente de los datos en XML indicados en el fichero Web.sitemap, no necesita de un proveedor intermedio, como si sucede con los otros dos controles de navegacin, el control TreeView y Menu. La funcin de este control es la de indicar en que lugar exacto de la estructura del sitio Web nos encontramos actualmente, adems de ofrecernos un sistema de navegacin de forma automtica, ya que, como hemos dicho, lee directamente los datos del mapa del sitio y los interpreta, generando de forma dinmica los enlaces que nos permiten navegar a travs de las distintas pginas que conforman la estructura del sitio Web. Los enlaces se generan siguiendo una estructura lineal y utilizando un separador. Estos enlaces se generan de forma dinmica a partir del fichero Web.sitemap, y variarn segn en la pgina ASPX en la que nos encontremos en cada momento. As si tenemos en cuenta el mapa de sitio Web definido anteriormente, y aadimos un control SiteMapPath en la pgina Helados.aspx, obtendramos como resultado un sistema de navegacin como el de la Figura 6.

Figura 6

TreeView: en este caso el acceso a la estructura del sitio Web definida por el fichero Web.sitemap, no se realiza directamente, tal como hacamos en el caso del control SiteMapPath, sino que se tiene que hacer a travs de un proveedor de fuente de datos, es decir, ya no existe un vnculo directo entre el control de navegacin y el mapa del sitio Web. P g i n a | 23

El control TreeView posee un uso ms general, no slo para la navegacin dentro de un sitio Web, sino que podremos utilizar el control TreeView para mostrar informacin de forma jerrquica y de forma muy intuitiva para el usuario, ya que muestra la informacin en estructura de rbol, como su propio nombre indica. El proveedor de fuente de datos que vamos a utilizar para establecer el enlace con el fichero del mapa del sitio Web, es el control llamado SiteMapDataSource. Menu: este control va a ser utilizado para ofrecer un gran nmero de opciones de navegacin al usuario mediante un men. El men suele constar de una serie de opciones que siempre son visibles y al situarnos sobre ellas se van mostrando las subopciones que se encuentran dentro de una opcin principal.

Veamos en accin estos controles Web de navegacin. En primer lugar vamos a ver un ejemplo muy sencillo de utilizacin del control Menu. En este ejemplo y en el siguiente vamos a utilizar el fichero de mapa del sitio Web visto anteriormente. En el Cdigo fuente 4 se puede ver la utilizacin del control Menu. Pgina sin ttulo Cdigo fuente 4

Como se puede ver el control de fuente de datos SiteMapDataSource, se utiliza indicando en la propiedad DataSourceId el nombre del control SiteMapDataSource. Cada opcin del control Menu, cuando se utiliza la fuente de datos SiteMapDataSource, se corresponde con un enlace a una pgina dentro de la estructura del mapa del sitio Web. En la Figura 7 se puede ver el aspecto del control Menu, segn nos vamos posicionando con el puntero del ratn en las distintas opciones se van abriendo las subopciones, si una opcin tiene subopciones en su interior aparece un icono de un tringulo para indicarlo. Por defecto la distribucin de las distintas opciones del control Menu es vertical y como se puede apreciar en el ejemplo, en un primer momento slo aparece la opcin principal Inicio. El control Menu posee elementos estticos y dinmicos, en este caso el elemento esttico es la opcin Inicio que siempre aparece cuando se genera la pgina, y los elementos estticos son los que van apareciendo segn nos vamos situando con el puntero del ratn.

P g i n a | 24

Figura 7

Ahora veremos en accin un control TreeView para mostrar el mapa del sitio Web en la estructura de rbol. Vamos a seguir con el ejemplo del supermercado y con el mismo fichero Web.sitemap. Antes de aadir el control TreeView, recordemos que tenemos que incluir el control SiteMapDataSource, para poder acceder al mapa del sitio Web que tenemos definido en el archivo Web.sitemap. Una vez aadido el control de fuente de datos, ya estamos en disposicin de aadir el control TreeView. Ahora nos queda conectar el control TreeView con el control SiteMapDataSource, esto lo haremos a travs de la propiedad DataSourceId del control TreeView, a esta propiedad le asignaremos el nombre del control SiteMapDataSource. El Cdigo fuente 5 sera el cdigo de la pgina ASPX que mostrara el mapa del sitio Web dentro de un control TreeView. Pgina sin ttulo Cdigo fuente 5

La Figura 8 mostrara el resultado de la ejecucin de esta pgina. Ahora la pgina en la que se muestra el control TreeView no interviene en la forma en la que se muestra la informacin, tal como suceda con el control SiteMapPath. Lo que si sucede es que cada uno de los nodos hoja (nodos finales) del rbol se corresponde con una de las pginas definidas en el mapa del sitio Web, cada nodo hoja es un enlace a la pgina que representa, y al pulsar sobre cada uno de estos nodos, el navegador nos llevar a la pgina correspondiente. P g i n a | 25

Figura 8

Controles Web de inicio de sesinTambin aparece una nueva categora de controles llamada de inicio de sesin, estos controles nos van a ofrecer un interfaz y funcionalidad para realizar labores de autenticacin y autorizacin dentro de nuestro sitio Web. Dentro de este grupo tenemos por ejemplo, el control Login que nos ofrece un interfaz grfico consistente en las cajas de texto y botones para indicar un nombre de usuario y una contrasea, y el control ChangePassword que nos provee de un formulario para realizar el cambio de contrasea. Estos controles no van a ofrecer nicamente un interfaz, sino que tambin ofrecen un gran nmero de funcionalidades, que estn estrechamente relacionadas con las tareas propias de la autenticacin y autorizacin de usuarios. El proceso de autenticacin es el que determina la identidad del usuario, una vez que el usuario se ha autenticado el siguiente paso ser comprobar si tiene la autorizacin necesaria para acceder a un recurso determinado, como puede ser una pgina ASPX. El proceso de autenticacin est implementado en ASP .NET mediante el servicio de pertenencia a grupo (Membership), y el proceso de autorizacin mediante el servicio gestor de roles (RoleManager). Y los controles de inicio de sesin, nos ofrecen una serie de funcionalidades, apoyndose en estos dos nuevos servicios de ASP .NET 2.0, para que podamos realizar tareas de autenticacin y autorizacin de usuarios en nuestras aplicaciones Web de forma muy sencilla. A continuacin vamos a describir brevemente los distintos controles de inicio de sesin que nos ofrece ASP .NET para realizar las tareas de autenticacin y autorizacin dentro de nuestras aplicaciones Web, junto con esta descripcin se ofrece una figura con el aspecto bsico que tienen estos controles en la vista de diseo de VS 2005. CreateUserWizard: este control hereda del control nuevo control Web estndar Wizard y nos ofrece la posibilidad de aadir un nuevo usuario a la aplicacin Web. Basndose en el servicio de pertenencia a grupo aadir un nuevo usuario al almacn de datos del servicio. Por P g i n a | 26

defecto se utilizar el proveedor AspNetSqlMembershipProvider y se aadir el nuevo usuario a una base de datos SQL Server 2005 Express. Debido a que hereda del control Wizard, podemos utilizar este control para crear un usuario en un solo paso o bien, utilizar varios pasos. Por defecto nos solicita los datos del usuario que deseamos dar de alta en un nico paso, y luego se muestra un segundo paso en el que se informa del xito de nuestra operacin de insercin. Este control ser imprescindible para realizar el proceso de alta de nuevos usuarios dentro de nuestra aplicacin Web.

Figura 9

Login: este control lo vamos a utilizar para autenticar un usuario, que ya ha sido creado previamente, en nuestro sitio Web. Este control utilizar internamente la clase Membership para autenticar el usuario en el servicio de pertenencia a grupo. Este control se utilizar normalmente en la pgina de inicio de sesin de nuestra aplicacin Web.

Figura 10

ChangePassword: este control de inicio de sesin permite modificar la contrasea a un usuario ya dado de alta, que ya se encuentra autenticado en la aplicacin Web. Para cambiar la contrasea se pide una confirmacin de la antigua contrasea del usuario. Este control comprobar la correspondencia de contraseas, y en el caso de que sea correcta, se modificar la contrasea del usuario. Adems se mostrar al usuario un mensaje indicando que la operacin de cambio de contrasea se ha llevado a cabo con xito.

P g i n a | 27

Figura 11

PasswordRecovery: este otro control tambin nos va a permitir gestionar las contraseas, en este caso su funcin es la de enviar al usuario, va correo electrnico, su contrasea actual. Este control se utiliza cuando el usuario ha olvidado su contrasea, y le pedir su nombre de usuario y una respuesta a una pregunta secreta, si es que tenemos ese tipo de configuracin en nuestro servicio de pertenencia a grupo. Para utilizar este control, no es necesario que el usuario se encuentre autenticado en la aplicacin Web. Tambin veremos que mediante este control se puede cambiar tambin la contrasea del usuario segn la configuracin que tengamos.

Figura 12

LoginStatus: este control detecta automticamente el estado de autenticacin en el que se encuentra el usuario, y muestra un control LinkButton que permitir al usuario iniciar la sesin o bien cerrar la sesin con la aplicacin Web, segn se encuentre autenticado o no respectivamente.

Figura 13

LoginName: mostrar el nombre del usuario que se encuentra conectado actualmente a la aplicacin Web. Si el usuario se encuentra autenticado mostrar su nombre (identificador o login), en caso contrario no mostrar nada.

Figura 14

LoginView: en este caso este control adems de utilizar la clase Membership del servicio de pertenencia a grupo, tambin har uso de la clase Roles del servicio gestor de perfiles. Segn el rol al que pertenezca el usuario actual, este control mostrar unos contenidos u otros, basndose en el, ya conocido por todos, mecanismo de plantillas (templates). Por defecto, como se puede ver en la Figura 15, este control no tiene una representacin grfica, la tendr cuando indiquemos una plantilla para el mismo. Este ser el nico control Web de inicio de sesin que haga uso del servicio gestor de roles.

P g i n a | 28

Figura 15

WebPartsEl grupo de controles llamado Elementos Web tambin podemos encontrarlo por su nomenclatura en ingls, que suele ser ms comn, se trata de los controles WebPart. Estos son unos controles de servidor bastante potentes que permiten al usuario del sitio Web personalizar el aspecto y distribucin del mismo, estos controles son utilizados en aplicaciones Web de tipo portal para que el usuario tenga una experiencia completamente personalizada del sitio Web. Por lo tanto el usuario podr modificar en tiempo de ejecucin las propiedades de los controles WebPart. Adems cuando el usuario regrese al sitio Web lo encontrar de la misma forma que lo dej, y cada usuario tendr su propia personalizacin del sitio Web. Las operaciones que el usuario puede realizar sobre los controles WebPart vienen determinados por el modo que se define para el control WebPartManager , que ser el gestor de todos los controles WebPart de la pgina, y que se har a travs de su propiedad DisplayMode. Este control puede presentar los siguientes modos: Normal (BrowseDisplayMode): es el modo de navegacin y la pgina ASPX se presenta como una pgina normal, sin que el usuario pueda editar las propiedades de los controles WebParts o bien moverlos por la pgina y cambiarlos de posicin. Ni siquiera aparecen destacados los controles WebPartZone, que son los que indican cada una de las secciones o zonas en las que se divide la pgina. Aunque lo que si podremos hacer ser minimizar, maximizar y cerrar los elementos WebPart presentes en la pgina. Este es el modo por defecto que ofrece la propiedad DisplayMode del control WebPartManager. Edicin (EditDisplayMode): en este modo se nos permite editar una serie de propiedades que pueden mostrar los controles WebParts. Estas propiedades pueden ser, entre otras, el ttulo del control WebPart, el color, la forma en la que se presenta por defecto, etc. Diseo (DesignDisplayMode): en el modo de diseo el usuario podr mover los controles WebPart de una seccin a otra y tambin cambiar el orden de los mismos, arrastrndolos segn convenga en cada caso. La posibilidad de arrastrar y soltar los controles WebPart, tambin se encuentra disponibles en el modo anterior, y en el modo de catlogo que vamos a ver a continuacin. Catlogo (CatalogDisplayMode): en este modo el usuario podr agregar a la pgina controles WebPart que he eliminado de la misma, e incluso controles que no existen.

Veamos brevemente los principales controles que podemos encontrar dentro de esta nueva categora que nos ofrece ASP .NET 2.0. WebPartManager: este control va a ser el encargado de gestionar las distintas zonas en las que se van a encontrar los distintos controles WebParts. Este control no va a tener un aspecto visual, pero siempre ser necesario que exista un control de este tipo para poder utilizar lo que se denomina el Framework de portal, que es la parte del .NET Framework que implementa el mecanismo de WebParts. WebPartZone: este control define las zonas en las que se van a distribuir los controles WebParts dentro de la pgina ASPX correspondiente. Estos controles definen reas de P g i n a | 29

contenidos que sern gestionadas por el control WebPartManager presente tambin en la pgina ASPX. En el momento que aadimos un control Web, sea del tipo que sea, a un control WebPartZone se convierte de forma automtica en un control WebPart, sin que tengamos que hacer nada especial. CatalogZone: este control va a permitir aadir al usuario controles WebPart a la pgina ASPX. Al aadir un control de este tipo se podr pasar al modo catlogo, que permite aadir los elementos que se han ido eliminando de la pgina. PageCatalogPart: un control CatalogZone no tiene sentido hasta que no se le aade un control PageCatalogPart. Este control ser el que permite mostrar al control CatalogZone todos los controles WebParts que se han eliminado de la pgina ASPX, para que el usuario los seleccione y aada a la zona deseada. EditorZone: este control tambin resulta muy interesante, ya que nos permite editar las propiedades de los distintos controles WebPart presentes en la pgina ASPX. Este control se podr utilizar nicamente en el modo de edicin. BehaviorEditorPart: este control se utiliza en combinacin con el anterior, ya que al arrastrar un control BehaviorEditorPart en un control EditorZone, le estamos indicando al Portal Framework que se va a poder editar una serie de propiedades relacionadas con el comportamiento del control, como pueden ser: permitir cerrar, ocultar, cambiar de zona, etc. LayoutEditorPart: este control se encuentra relacionado con los dos anteriores, y lo que permite modificar al usuario es el diseo del control. Algunas de las propiedades que se pueden editar mediante este control es la zona a la que pertenecen y el orden de posicin que presentan dentro de la misma. ApareanceEditorPart: al igual que los dos controles anteriores, utilizado conjuntamente con el control EditorZone, nos va a permitir modificar algn aspecto de los controles WebPart de nuestra pgina ASPX, en este caso nos permitir modificar una serie de propiedades relacionadas con la apariencia de los controles WebParts. Algunas de las propiedades que podr editar el usuario son: el tamao (ancho y alto) y el ttulo de los controles WebPart.

Todos estos controles, y otros ms, los veremos con ms detalle en este texto, en el captulo correspondiente en el que se tratar el Portal Framework y todo lo relacionado con los controles WebParts. Como anticipo se muestra el Cdigo fuente 6 que se corresponde con una pgina ASPX que hace uso de los distintos controles WebPart que se acaban de describir. En negrita se destacan los elementos ms importantes de la pgina ASPX. Pgina sin ttulo

P g i n a | 30

P g i n a | 31

Elemento 1 Elemento 2 Elemento 3 Elemento 1 Elemento 2 Elemento 3 Elemento 4 1 2 3 4 5

P g i n a | 32

Partial Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Load 'Me.WebPartManager1.DisplayMode = WebPartManager.CatalogDisplayMode 'Me.WebPartManager1.DisplayMode = WebPartManager.EditDisplayMode 'Me.WebPartManager1.DisplayMode = WebPartManager.BrowseDisplayMode 'Me.WebPartManager1.DisplayMode = WebPartManager.ConnectDisplayMode Me.WebPartManager1.DisplayMode = WebPartManager.DesignDisplayMode End Sub

End Classpublic partial class EjemploCS : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { /*Me.WebPartManager1.DisplayMode = WebPartManager.CatalogDisplayMode Me.WebPartManager1.DisplayMode = WebPartManager.EditDisplayMode Me.WebPartManager1.DisplayMode = WebPartManager.BrowseDisplayMode Me.WebPartManager1.DisplayMode = WebPartManager.ConnectDisplayMode*/ WebPartManager1.DisplayMode = WebPartManager.DesignDisplayMode; } } Cdigo fuente 6

En este caso se tienen dos zonas definidas por dos controles WebPartZone, una zona de catlogo definida mediante un control CatalogZone, y otra zona de edicin especificada mediante un control EditorZone. Las distintas zonas de la pgina se encuentran en una tabla de HTML, para tener un control sobre ellas y poder distribuirlas. Esta es una prctica muy comn a la hora de distribuir las distintas zonas que incluyen en su interior uno o varios controles WebPart. Sobre las distintas zonas se han aplicado formatos automticos que nos ofrecen sus smart tags (etiquetas inteligentes), que son una serie de etiquetas especiales que nos ofrece el entorno de desarrollo VS 2005 en la vista de diseo, y que nos van a permitir realizar distintas operaciones sobre los controles Web de forma rpida y sencilla. Debido a estos formatos aparecen en la pgina ASPX tantas etiquetas, estas se utilizan para definir distintos estilos que afectan a los controles WebPartZone. Como se puede ver en el evento Page_Load se indica el modo que va a utilizar el control WebPartManager, recomiendo al lector que vaya cambiando los distintos modos que se encuentran comentados y as tendr un primer contacto con los controles WebPart y podr ver las distintas opciones de configuracin que presentan los controles WebParts en los distintos modos. En la Figura 16 se puede ver un ejemplo de ejecucin de la pgina ASPX. En este caso se corresponde con el modo de diseo.

P g i n a | 33

Figura 16

Como ya hemos comentado, las distintas modificaciones que realice el usuario sobre los distintos controles WebPart se mantendrn para las siguientes veces que el usuario visite la pgina, adems cada usuario tendr su propia visin de la pgina ASPX, atendiendo a la configuracin de controles WebPart que haya realizado sobre la misma. Para mantener el estado de los distintos controles WebPart, se recurre a una base de datos de SQL Server Express 2005, llamada ASPNETDB.MDF. Esta base de datos la aade VS 2005 a nuestro directorio App_Data de nuestra aplicacin, en el momento que empecemos a utilizar controles WebPart en cualquiera de las pginas ASPX de nuestro proyecto. El directorio App_Data que va a contener los almacenes de datos utilizados por la aplicacin, podrn contener ficheros de SQL Server (.MDF), Access (.MDB), ficheros XML. En el siguiente captulo se comentarn los distintos directorios especiales que presenta ASP .NET 2.0 para las aplicaciones Web. Esta misma base de datos tambin es utilizada por los servicios de suscripcin (Membership) y de gestin de roles (RoleManager), que nos ofrece ASP .NET 2.0.

Controles EstndarDentro del grupo de controles estndar tambin aparecen nuevos controles de servidor, tan sencillos como puede ser el control BulletedList, que representa una lista de elementos, el control HiddenField, para representar un campo oculto de un formulario, y ms complejos como puede ser el control Wizard, que permite definir una serie de pasos en forma de un asistente. En general los

P g i n a | 34

nuevos controles estndar que se han aadido en ASP .NET 2.0 nos van a permitir ahorrarnos mucho trabajo debido a las funcionalidades que ofrecen. A continuacin, al igual que hemos hecho en otros apartados, se van a comentar brevemente algunos de estos nuevos controles: BulletedList: este control representa una lista ordenada (etiqueta ) o desordenada (etiqueta

  • ). El control BulletedList est formado por controles ListItem. HiddenField: representa un campo oculto del formulario, es decir, como cdigo HTML generar . Ser muy til cuando queramos enviar informacin que no queremos que se visualice en el formulario, pero esta informacin si que ser visible si el usuario en el navegador selecciona ver el cdigo de la pgina. FileUpload: nos permite enviar archivos al servidor Web de forma muy sencilla, por lo tanto se corresponde con un elemento de HTML. Antes de ponernos a utilizar este control Web debemos tener en cuenta dos aspectos, por un lado si tenemos permisos de escritura en el destino en el que queremos copiar el archivo, y las limitaciones de tamao que tenemos a la hora de enviar un archivo al servidor Web. ImageMap: en este caso se trata de un control Web que nos permite definir un mapa de imagen sensible, es decir, una imagen que posee varias secciones y segn en la seccin en la que se pulse la pgina realizar una accin u otra. Con este control podemos utilizar una imagen como un men de navegacin, por ejemplo. MultiView: nos va a permitir mostrar/ocultar algunas partes de la pgina ASPX que estamos mostrando en el navegador. El control MultiView va a actuar como un contenedor de controles View, y estos a su vez van a contener grupos de controles Web hijos. El control MultiView nos va a permitir ir ocultando y mostrando los distintos controles View que contiene, sera similar a ir modificando la visibilidad de controles Panel. nicamente puede estar activo en un mismo momento un control View. VS 2005 nos ofrece en la vista de diseo la posibilidad de construir de manera visual nuestro control MultiView con los distintos controles View que forman parte de el. Wizard: nos va a permitir construir una secuencia de pasos ordenados, de ah viene su nombre, va a representar un asistente. El control Wizard nos va a servir para realizar la navegacin entre los distintos pasos de un proceso, como puede ser recoger en varios pasos la informacin facilitada por un usuario.Para terminar con el presente captulo, se va a mostrar de forma rpida un ejemplo de utilizacin del control Wizard. A continuacin se ofrece el Cdigo fuente 7, que es el cdigo que se generara al crear un control Wizard sencillo, con tres pasos, utilizando un formato predeterminado y luego aadiendo un control Button al paso uno, y un control Image al paso dos. Pgina sin ttulo P g i n a | 35 Este es el primer paso

    Este es el segundo

    Y este el tercero y ltimo Cdigo fuente 7A continuacin se ofrece el aspecto que tendra al situarnos en el paso dos.Figura 17En el siguiente captulo seguiremos comentando las novedades que podemos encontrarnos dentro de ASP .NET 2.0.P g i n a | 36