Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

41
Página | 1 Desarrollo de aplicaciones web con ASP .NET 4.0 Ángel Esteban y Ángel Rayo Ejemplo de texto

Transcript of Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Page 1: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 1

Desarrollo de aplicaciones web

con ASP .NET 4.0

Ángel Esteban y Ángel Rayo

Ejem

plo

de te

xto

Page 2: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 2

Sipnosis

Este texto se encuentra dedicado a la nueva versión de ASP .NET que ofrece Microsoft dentro de su entorno .NET Fra-mework 4.0. Se abordan diversos temas relacionados con el desarrollo de aplicaciones Web basadas en ASP .NET 4.0 como pueden ser: los tipos de controles Web que se incluyen en esta versión (de inicio de sesión, de navegación, de acce-so a datos, etc.), el servicio gestor de roles, tratamiento de errores, depuración y trazas, etc. Se requiere conocer los fun-damentos de Internet/Intranet, estar familiarizado con la navegación por la web, conocer HTML y conocer el sistema operativo Windows a nivel de usuario, así como algunos conocimientos de programación orientada a objetos. Los lenguajes de programación utilizados a lo largo del texto son Visual Basic .NET y C#.

Angel Esteban (Madrid, 1975) Ingeniero Técnico en Informática de Gestión (Universidad Politécnica de Madrid), con las siguientes titulaciones de Microsoft: MCSD, MCAD y MCTS (en SQL Server 2005). Trabaja como Software Architect en Alhambra-Eidos. Ex-perto en el diseño y desarrollo de aplicaciones Web basadas en ASP .NET. Autor de va-rios cursos virtuales en www.elcampusdigital.com.

Ángel Rayo es formador de Alhambra-Eidos desde 2004. Ha sido el autor y coautor de varios libros entre los que destaca el titulado "Administración y Desarrollo con WSS 3.0 y MOSS 2007" centrado en Microsoft SharePoint así como otros relacionados con la plata-forma .NET. Además, ha escrito artículos para dotnetmanía sobre el ciclo de vida de desa-rrollo de software con Visual Studio Team System, MSF y CMMI.

Ha participado en ponencias sobre SharePoint, Visual Studio Team System y Symbian. Posee las certificaciones MCPD en .NET Framework 4.0, MCITP en SQL Server 2008 y MCTS en SharePoint 2010 principalmente. Está certificado como formador oficial de Mi-crosoft, EXIN y Nokia+Symbian, siendo en esta última certificación uno de los dos únicos profesionales autorizados en España. Dentro de la gestión de procesos posee las certifica-ciones ITILv3 Expert, ITILv2 Service Manager e ISO/IEC 20000 Consultant Manager.

Ejem

plo

de te

xto

Page 3: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 3

Luarna Desarrollo de aplicaciones Web con ASP .NET 4.0 © Ángel Esteban y Ángel M. Rayo - Alhambra Eidos © De esta edición: 2011, Luarna Ediciones, S.L.

www.luarna.com

Madrid, febrero de 2011

ISBN: 978-84-15013-03-7

Versión 1.0 (25/02/2011)

«Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra solo puede ser reali-zada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Español de Dere-chos Reprográficos, www.cedro.org) si necesita fotocopiar, escanear o hacer copias digitales de algún fragmento de esta obra». Ej

empl

o de

text

o

Page 4: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 4

DESARROLLO DE APLICACIONES WEB CON ASP .NET 4.0

Ángel Esteban y Ángel M. Rayo

Ejem

plo

de te

xto

Page 5: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 5

Indice

1. INTRODUCCIÓN A ASP .NET 4.0 .................................................................................................................................................. 15

INTRODUCCIÓN ............................................................................................................................................................................... 15 LENGUAJES DE PROGRAMACIÓN .......................................................................................................................................................... 16 RECORRIDO POR LAS DISTINTAS VERSIONES DE ASP .................................................................................................................................. 16 NOVEDADES DE ASP .NET 4.0 ........................................................................................................................................................... 18

Nuevos controles de servidor .................................................................................................................................................. 18 Master Pages ......................................................................................................................................................................... 20 Temas y Skins ......................................................................................................................................................................... 20 Personalización....................................................................................................................................................................... 20 Internacionalización ............................................................................................................................................................... 20 Nuevo modelo de separación de código .................................................................................................................................. 21 PostBack entre distintas páginas ............................................................................................................................................. 22 Nuevos eventos de las páginas ASPX ....................................................................................................................................... 22 Soporte para manejar el foco de la página .............................................................................................................................. 23 Nuevas características del código de cliente ............................................................................................................................ 23 Directorios de una aplicación ASP .NET ................................................................................................................................... 24 Nueva sintaxis ........................................................................................................................................................................ 25 Nuevas directivas de las páginas ASPX .................................................................................................................................... 25 Distribución de la aplicación ................................................................................................................................................... 26 Visual Studio 2010 .................................................................................................................................................................. 26 Precompilación de páginas ..................................................................................................................................................... 27 Mejora del ViewState ............................................................................................................................................................. 27 API de configuración ............................................................................................................................................................... 28 Consola MMC de administración ............................................................................................................................................. 28 Soporte para 64 bits ............................................................................................................................................................... 29

MATERIAL NECESARIO ...................................................................................................................................................................... 29

2. PRIMEROS PASOS CON ASP .NET 4.0 .......................................................................................................................................... 31

INTRODUCCIÓN ............................................................................................................................................................................... 31 EL ENTORNO DE TRABAJO .................................................................................................................................................................. 31 CREACIÓN DE UNA APLICACIÓN WEB CON VS 2010 ................................................................................................................................. 32 MODELO DE SEPARACIÓN DE CÓDIGO ................................................................................................................................................... 36 CREACIÓN DE NUESTRA PRIMERA PÁGINA ASP .NET 4.0 ........................................................................................................................... 38 CASO PRÁCTICO .............................................................................................................................................................................. 41

Planteamiento ........................................................................................................................................................................ 41

3. ELEMENTOS COMUNES DEL DESARROLLO DE APLICACIONES WEB CON ASP .NET 4.0 ................................................................ 42

INTRODUCCIÓN ............................................................................................................................................................................... 42 SINTAXIS BÁSICA DE ASP .NET ........................................................................................................................................................... 42 WEB FORMS .................................................................................................................................................................................. 45 CONTROLES HTML Y CONTROLES WEB DE SERVIDOR................................................................................................................................ 46 EVENTOS DE UNA PÁGINA ASPX ......................................................................................................................................................... 49 SEPARACIÓN DE CÓDIGO ................................................................................................................................................................... 53 DIRECTIVAS DE LAS PÁGINAS ASPX ...................................................................................................................................................... 55 EVENTOS DE LOS CONTROLES WEB DE SERVIDOR ..................................................................................................................................... 56 CONFIGURACIÓN DE LAS APLICACIONES ASP .NET ................................................................................................................................... 62 CASO PRÁCTICO: PLANTEAMIENTO ....................................................................................................................................................... 63

4. CONTROLES HTML ...................................................................................................................................................................... 64

INTRODUCCIÓN ............................................................................................................................................................................... 64 CONTROLES HTML .......................................................................................................................................................................... 64 HTMLANCHOR ................................................................................................................................................................................ 66 HMLBUTTON ................................................................................................................................................................................. 68 HTMLFORM ................................................................................................................................................................................... 68 HTMLGENERICCONTROL ................................................................................................................................................................... 68 Ej

empl

o de

text

o

Page 6: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 6

HTMLHEAD ................................................................................................................................................................................... 70 HTMLTITLE .................................................................................................................................................................................... 71 HTMLMETA ................................................................................................................................................................................... 71 HTMLLINK ..................................................................................................................................................................................... 71 HTMLIMAGE .................................................................................................................................................................................. 72 HTMLINPUTBUTTON ........................................................................................................................................................................ 73 HTMLINPUTSUBMIT, HTMLINPUTRESET ................................................................................................................................................ 73 HTMLINPUTCHECKBOX ..................................................................................................................................................................... 73 HTMLINPUTFILE .............................................................................................................................................................................. 73 HTMLINPUTHIDDEN ......................................................................................................................................................................... 73 HTMLINPUTIMAGE .......................................................................................................................................................................... 74 HTMLINPUTRADIOBUTTON ................................................................................................................................................................ 75 HTMLINPUTTEXT ............................................................................................................................................................................. 75 HTMLSELECT .................................................................................................................................................................................. 75 HTMLTABLE ................................................................................................................................................................................... 75 HTMLTABLEROW ............................................................................................................................................................................ 77 HTMLTABLECELL ............................................................................................................................................................................. 77 HTMLTEXTAREA ............................................................................................................................................................................. 77 CORRESPONDENCIA ENTRE CONTROLES HTML Y ETIQUETAS HTML ............................................................................................................. 77 CASO PRÁCTICO .............................................................................................................................................................................. 78

Planteamiento ........................................................................................................................................................................ 78

5.CONTROLES WEB ESTÁNDAR I ..................................................................................................................................................... 79

INTRODUCCIÓN A LOS CONTROLES WEB ................................................................................................................................................ 79 CONTROLES WEB ESTÁNDAR .............................................................................................................................................................. 82 BUTTON ........................................................................................................................................................................................ 82 CHECKBOX .................................................................................................................................................................................... 83 CHECKBOXLIST ............................................................................................................................................................................... 85 DROPDOWNLIST ............................................................................................................................................................................. 87 BULLETEDLIST................................................................................................................................................................................. 89 HYPERLINK .................................................................................................................................................................................... 92 IMAGE .......................................................................................................................................................................................... 92 IMAGEBUTTON ............................................................................................................................................................................... 92 LABEL ........................................................................................................................................................................................... 93 LITERAL ......................................................................................................................................................................................... 94 LINKBUTTON .................................................................................................................................................................................. 94 HIDDENFIELD ................................................................................................................................................................................. 95 LISTBOX ........................................................................................................................................................................................ 96 PANEL .......................................................................................................................................................................................... 97 PLACEHOLDER ................................................................................................................................................................................ 98 RADIOBUTTON ............................................................................................................................................................................... 99 RADIOBUTTONLIST ........................................................................................................................................................................ 100 FILEUPLOAD ................................................................................................................................................................................ 102 IMAGEMAP ................................................................................................................................................................................. 104 TABLE, TABLEROW Y TABLECELL ....................................................................................................................................................... 105 TEXTBOX ..................................................................................................................................................................................... 107 CORRESPONDENCIA ENTRE CONTROLES WEB ESTÁNDAR BÁSICOS Y ETIQUETAS HTML .................................................................................... 107 CASO PRÁCTICO 1: PLANTEAMIENTO .................................................................................................................................................. 108 CASO PRÁCTICO 2: PLANTEAMIENTO .................................................................................................................................................. 108

6.CONTROLES WEB ESTÁNDAR II .................................................................................................................................................. 109

INTRODUCCIÓN ............................................................................................................................................................................. 109 CALENDAR ................................................................................................................................................................................... 109 MULTIVIEW ................................................................................................................................................................................. 117 WIZARD ...................................................................................................................................................................................... 121 CASO PRÁCTICO: PLANTEAMIENTO ..................................................................................................................................................... 130

7.CONTROLES WEB DE VALIDACIÓN ............................................................................................................................................. 132

INTRODUCCIÓN ............................................................................................................................................................................. 132 SINTAXIS Y ASPECTOS GENERALES ....................................................................................................................................................... 132 REQUIREDFIELDVALIDATOR.............................................................................................................................................................. 133 Ej

empl

o de

text

o

Page 7: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 7

COMPAREVALIDATOR ..................................................................................................................................................................... 136 RANGEVALIDATOR ......................................................................................................................................................................... 139 REGULAREXPRESSIONVALIDATOR ...................................................................................................................................................... 140 VALIDATIONSUMMARY ................................................................................................................................................................... 141 CUSTOMVALIDATOR....................................................................................................................................................................... 143 GRUPOS DE VALIDACIÓN.................................................................................................................................................................. 146 CASO PRÁCTICO: PLANTEAMIENTO ..................................................................................................................................................... 147

8.ASPECTOS COMUNES DE LOS CONTROLES WEB ........................................................................................................................ 148

INTRODUCCIÓN ............................................................................................................................................................................. 148 EL API FOCUS .............................................................................................................................................................................. 148 CROSS-PAGE POSTBACK ................................................................................................................................................................. 151 APLICANDO ESTILOS A LOS CONTROLES WEB ......................................................................................................................................... 155 AÑADIENDO CONTROLES WEB EN TIEMPO DE EJECUCIÓN ......................................................................................................................... 160

9.CONTROLES WEB DE NAVEGACIÓN I ......................................................................................................................................... 162

INTRODUCCIÓN ............................................................................................................................................................................. 162 DEFINIENDO LA ESTRUCTURA DEL SITIO WEB ........................................................................................................................................ 162 SITEMAPPATH.............................................................................................................................................................................. 165 TREEVIEW ................................................................................................................................................................................... 168 CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 187

10.CONTROLES WEB DE NAVEGACIÓN II ...................................................................................................................................... 188

INTRODUCCIÓN ............................................................................................................................................................................. 188 MENU ........................................................................................................................................................................................ 188 SITEMAPDATASOURCE ................................................................................................................................................................... 196 LA CLASE SITEMAP ........................................................................................................................................................................ 200 CASO PRÁCTICO: PLANTEAMIENTO ..................................................................................................................................................... 202

11.PLANTILLAS Y DATA BINDING EN ASP .NET 4.0 ........................................................................................................................ 204

INTRODUCCIÓN ............................................................................................................................................................................. 204 INTRODUCCIÓN A LOS CONTROLES ENLAZADOS A DATOS .......................................................................................................................... 204 PLANTILLAS .................................................................................................................................................................................. 205 DATA BINDING ............................................................................................................................................................................. 211

Estableciendo como origen de datos propiedades ................................................................................................................. 216 Estableciendo como origen de datos colecciones y listas ........................................................................................................ 220 Estableciendo como origen de datos expresiones y métodos.................................................................................................. 226 El método DataBinder.Eval()/Eval() ....................................................................................................................................... 227 Caso Práctico: Planteamiento ............................................................................................................................................... 231

12.CONTROLES WEB DE DATOS: CONTROLES DE ORIGEN DE DATOS ............................................................................................ 232

INTRODUCCIÓN ............................................................................................................................................................................. 232 CLASIFICACIÓN DE LOS CONTROLES WEB DE DATOS ................................................................................................................................ 232 SQLDATASOURCE .......................................................................................................................................................................... 233 ACCESSDATASOURCE ..................................................................................................................................................................... 244 XMLDATASOURCE ......................................................................................................................................................................... 247 OBJECTDATASOURCE ..................................................................................................................................................................... 249 CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 252

13.CONTROLES WEB DE DATOS: CONTROLES ENLAZADOS A DATOS I .......................................................................................... 253

INTRODUCCIÓN ............................................................................................................................................................................. 253 REPEATER .................................................................................................................................................................................... 253 EL CONTROL DATALIST .................................................................................................................................................................... 255 GRIDVIEW ................................................................................................................................................................................... 265

Definición de columnas dentro de un control GridView .......................................................................................................... 266 Ordenación de columnas....................................................................................................................................................... 273 Paginación............................................................................................................................................................................ 276 Selección de una fila ............................................................................................................................................................. 279 Edición y modificación de una fila ......................................................................................................................................... 281 Eliminar filas ......................................................................................................................................................................... 284 Mostrar y ocultar columnas .................................................................................................................................................. 286 Ej

empl

o de

text

o

Page 8: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 8

Barra de scroll en un control GridView .................................................................................................................................. 288

14.CONTROLES WEB DE DATOS: CONTROLES ENLAZADOS A DATOS II ......................................................................................... 290

INTRODUCCIÓN ............................................................................................................................................................................. 290 DETAILSVIEW ............................................................................................................................................................................... 290

Configurando el control DetailsView ..................................................................................................................................... 291 Modificación, inserción y eliminación de datos ...................................................................................................................... 295 Conectando los controles GridView y DetailsView .................................................................................................................. 298

FORMVIEW.................................................................................................................................................................................. 300 CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 309

15.CONTROLES WEB DE INICIO DE SESIÓN I ................................................................................................................................. 310

INTRODUCCIÓN ............................................................................................................................................................................. 310 AUTENTICACIÓN Y AUTORIZACIÓN ...................................................................................................................................................... 310 CONTROLES DE INICIO DE SESIÓN ....................................................................................................................................................... 311 CONFIGURANDO LA APLICACIÓN WEB PARA EL USO DEL SERVICIO MEMBERSHIP ............................................................................................ 313

El modelo de proveedores ..................................................................................................................................................... 313 Configuración del fichero Web.config .................................................................................................................................... 315

CREATEUSERWIZARD ..................................................................................................................................................................... 319 Definiendo una zona segura y una zona pública .................................................................................................................... 320 Creación de un nuevo usuario ............................................................................................................................................... 321 Personalizando el control CreateUserWizard ......................................................................................................................... 322 Creación de usuarios con la clase Membership ...................................................................................................................... 328

LOGIN ........................................................................................................................................................................................ 333

16.CONTROLES WEB DE INICIO DE SESIÓN II ................................................................................................................................ 339

INTRODUCCIÓN ............................................................................................................................................................................. 339 CONFIGURACIÓN DEL PROVEEDOR DEL SERVICIO MEMBERSHIP .................................................................................................................. 339 LOGINSTATUS ............................................................................................................................................................................... 341 LOGINNAME ................................................................................................................................................................................ 342 CHANGEPASSWORD ....................................................................................................................................................................... 343 PASSWORDRECOVERY .................................................................................................................................................................... 348 LOGINVIEW ................................................................................................................................................................................. 350 LA CLASE MEMBERSHIP ................................................................................................................................................................... 358 CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 369

17.EL SERVICIO GESTOR DE ROLES ................................................................................................................................................ 371

INTRODUCCIÓN ............................................................................................................................................................................. 371 CONFIGURACIÓN DEL FICHERO WEB.CONFIG ........................................................................................................................................ 371 CONFIGURACIÓN DEL SERVICIO GESTOR DE ROLES .................................................................................................................................. 373 EL PROVEEDOR DEL SERVICIO GESTOR DE ROLES ..................................................................................................................................... 375 DEFINIENDO LOS ROLES DE UNA APLICACIÓN ......................................................................................................................................... 376 ASIGNACIÓN DE ROLES A USUARIOS .................................................................................................................................................... 380 CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 387

18.TRATAMIENTO DE ERRORES .................................................................................................................................................... 388

INTRODUCCIÓN ............................................................................................................................................................................. 388 TRATAMIENTO DE ERRORES ESTRUCTURADO ......................................................................................................................................... 388 LA CLASE EXCEPTION ...................................................................................................................................................................... 388 TRY/CATCH (TRATANDO LAS EXCEPCIONES) ......................................................................................................................................... 389 LANZANDO EXCEPCIONES ................................................................................................................................................................. 393 EXCEPCIONES PERSONALIZADAS ......................................................................................................................................................... 396 TRATAMIENTO DE ERRORES EN ASP .NET ........................................................................................................................................... 400 EL MÉTODO PAGE_ERROR ............................................................................................................................................................... 401 EL MÉTODO APPLICATION_ERROR ..................................................................................................................................................... 402 EL ATRIBUTO ERRORPAGE DE LA DIRECTIVA @PAGE ............................................................................................................................... 404 DEFINIENDO PÁGINAS DE ERROR EN EL FICHERO WEB.CONFIG ................................................................................................................... 406 CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 408

19.TRAZAS Y DEPURACIÓN EN ASP .NET 4.0 ................................................................................................................................. 410

INTRODUCCIÓN ............................................................................................................................................................................. 410 Ejem

plo

de te

xto

Page 9: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 9

EL MECANISMO DE TRAZAS............................................................................................................................................................... 410 TRAZAS A NIVEL DE PÁGINA .............................................................................................................................................................. 410 ESCRIBIENDO EN LAS TRAZAS ............................................................................................................................................................ 411 TRAZAS DESDE COMPONENTES .NET .................................................................................................................................................. 416 TRAZAS A NIVEL DE APLICACIÓN ......................................................................................................................................................... 418 DEPURACIÓN EN ASP .NET ............................................................................................................................................................. 419 DEPURANDO CON EL SDK DEBUGGER ................................................................................................................................................. 420 DEPURANDO CON VISUAL STUDIO 2010 ............................................................................................................................................. 423

20.LA CLASE PAGE ........................................................................................................................................................................ 425

INTRODUCCIÓN ............................................................................................................................................................................. 425 EVENTOS DE LA PÁGINA ................................................................................................................................................................... 425 PROPIEDADES DE LA CLASE PAGE ....................................................................................................................................................... 429 MÉTODOS DE LA CLASE PAGE ........................................................................................................................................................... 431 DIRECTIVAS DE LA PÁGINA................................................................................................................................................................ 431

La directiva @Page ............................................................................................................................................................... 432 La directiva @Import ............................................................................................................................................................ 435 La directiva @Implements .................................................................................................................................................... 435 La directiva @Register .......................................................................................................................................................... 435 La directiva @Assembly ........................................................................................................................................................ 436 La directiva @OutputCache .................................................................................................................................................. 437 La directiva @Reference ....................................................................................................................................................... 439

21.APLICACIONES ASP .NET 4.0 I .................................................................................................................................................. 440

INTRODUCCIÓN ............................................................................................................................................................................. 440 ELEMENTOS BÁSICOS DE UNA APLICACIÓN ASP .NET ............................................................................................................................. 440 DIRECTORIOS ESPECIALES DE LA APLICACIÓN ASP .NET ........................................................................................................................... 440 LOS DIRECTORIOS BIN Y APP_CODE DE LA APLICACIÓN ............................................................................................................................ 442 EL FICHERO GLOBAL.ASAX ............................................................................................................................................................ 444

Directivas ............................................................................................................................................................................. 445 Declaración de código ........................................................................................................................................................... 446 Inclusiones del lado del servidor ............................................................................................................................................ 447 Etiquetas de declaración de objetos ...................................................................................................................................... 447

EVENTOS DE LA APLICACIÓN ............................................................................................................................................................. 448 Eventos por petición ............................................................................................................................................................. 449 Eventos condicionales ........................................................................................................................................................... 453

LA CLASE HTTPAPPLICATION ............................................................................................................................................................. 456 CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 457

22.MASTER PAGES ....................................................................................................................................................................... 458

INTRODUCCIÓN ............................................................................................................................................................................. 458 AÑADIENDO UNA PÁGINA MAESTRA ................................................................................................................................................... 458 ASOCIANDO PÁGINAS MAESTRAS ....................................................................................................................................................... 461 CREANDO LA PÁGINA DE CONTENIDO .................................................................................................................................................. 462 ACCEDIENDO A LA PÁGINA MAESTRA .................................................................................................................................................. 467 INDICANDO CONTENIDO POR DEFECTO ................................................................................................................................................ 472 ASIGNACIÓN DE LA PÁGINA MAESTRA EN TIEMPO DE EJECUCIÓN ................................................................................................................ 474 PÁGINAS MAESTRAS ANIDADAS ......................................................................................................................................................... 475 EVENTOS DE LAS PÁGINAS MAESTRAS .................................................................................................................................................. 478 CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 481

23.TEMAS Y SKINS ........................................................................................................................................................................ 483

INTRODUCCIÓN ............................................................................................................................................................................. 483 APLICANDO TEMAS ........................................................................................................................................................................ 483 UTILIZANDO SKINS ......................................................................................................................................................................... 486 PÁGINAS MAESTRAS Y TEMAS ........................................................................................................................................................... 494 CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 496

24.CREACIÓN Y UTILIZACIÓN DE CONTROLES DE USUARIO .......................................................................................................... 497

INTRODUCCIÓN ............................................................................................................................................................................. 497 CONTROLES DE USUARIO ................................................................................................................................................................. 497 Ej

empl

o de

text

o

Page 10: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 10

LA DIRECTIVA @REGISTER ............................................................................................................................................................... 498 CREANDO UN CONTROL DE USUARIO................................................................................................................................................... 499 CREANDO PROPIEDADES EN LOS CONTROLES DE USUARIO ......................................................................................................................... 502 EVENTOS EN LOS CONTROLES DE USUARIO............................................................................................................................................ 506 LA DIRECTIVA @CONTROL ............................................................................................................................................................... 507 CONTROLES DE USUARIO Y EL MODELO SE SEPARACIÓN DE CÓDIGO ............................................................................................................. 508 TRANSFORMACIÓN DE UNA PÁGINA ASPX EN CONTROL DE USUARIO .......................................................................................................... 510 CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 513

25.CREACIÓN DE COMPONENTES Y CONTROLES WEB DE SERVIDOR ............................................................................................ 514

INTRODUCCIÓN ............................................................................................................................................................................. 514 INTRODUCCIÓN A LOS COMPONENTES .NET ......................................................................................................................................... 514 CREACIÓN DE COMPONENTES .NET ................................................................................................................................................... 516 CREACIÓN DE CONTROLES ASP .NET DE SERVIDOR ................................................................................................................................ 523 CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 526

26.CONSTRUCCIÓN AVANZADA DE CONTROLES WEB DE SERVIDOR ............................................................................................ 528

INTRODUCCIÓN ............................................................................................................................................................................. 528 PROPIEDADES DE LOS CONTROLES DE SERVIDOR ..................................................................................................................................... 528 CONVERSIÓN DE LOS VALORES DE ATRIBUTOS........................................................................................................................................ 530 UTILIZANDO LOS SERVICIOS DE HTMLTEXTWRITER ................................................................................................................................. 533 PROPIEDADES DE CLASE ................................................................................................................................................................... 536 HEREDANDO DE LA CLASE SYSTEM.WEB.IU.WEBCONTROLS. WEBCONTROL ................................................................................................ 540 CONTROLES COMPUESTOS ............................................................................................................................................................... 542 MANTENIENDO EL ESTADO DE LOS CONTROLES ...................................................................................................................................... 546 LANZANDO EVENTOS ...................................................................................................................................................................... 548

27.ACCESO A DATOS CON ADO .NET ............................................................................................................................................ 552

INTRODUCCIÓN ............................................................................................................................................................................. 552 BENEFICIOS DE ADO .NET .............................................................................................................................................................. 552 ARQUITECTURA DE DATOS DESCONECTADOS ......................................................................................................................................... 553

DataSet ................................................................................................................................................................................ 554 ADO .NET y XML ................................................................................................................................................................... 555

UNA VISIÓN GENERAL DE ADO .NET.................................................................................................................................................. 555 LAS CLASES DE ADO .NET ............................................................................................................................................................... 556 ESTABLECIENDO LA CONEXIÓN. LOS OBJETOS CONNECTION ...................................................................................................................... 558 LOS OBJETOS COMMAND................................................................................................................................................................. 561 LOS OBJETOS DATAREADER .............................................................................................................................................................. 566 EL OBJETO DATASET....................................................................................................................................................................... 570 LOS OBJETOS DATAADAPTER ............................................................................................................................................................ 574 CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 577

28.CREACIÓN DE SERVICIOS WEB ................................................................................................................................................. 579

INTRODUCCIÓN ............................................................................................................................................................................. 579 INTRODUCCIÓN A LOS SERVICIOS WEB ................................................................................................................................................ 579 ARQUITECTURA DE UN SERVICIO WEB ................................................................................................................................................. 580 CONSTRUCCIÓN DE SERVICIOS WEB.................................................................................................................................................... 581 COMPROBANDO EL FUNCIONAMIENTO DEL SERVICIO WEB ....................................................................................................................... 585 LA DIRECTIVA @WEBSERVICE........................................................................................................................................................... 588 LOS ATRIBUTOS WEBSERVICE Y WEBMETHOD ...................................................................................................................................... 588 LA CLASE WEBSERVICE ................................................................................................................................................................... 593 SERVICIOS WEB DE ACCESO A DATOS .................................................................................................................................................. 597 CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 601

29.UTILIZACIÓN DE SERVICIOS WEB ............................................................................................................................................. 602

INTRODUCCIÓN ............................................................................................................................................................................. 602 LAS FASES DE LA PUESTA EN MARCHA DE UN SERVICIO WEB ...................................................................................................................... 602 DESCRIPCIÓN Y LOCALIZACIÓN DE SERVICIOS WEB .................................................................................................................................. 603 LAS CLASES PROXY ......................................................................................................................................................................... 605 CREACIÓN DE CLASES PROXY CON VISUAL STUDIO .NET .......................................................................................................................... 606

Creación de clases proxy con la utilidad WSDL.EXE ................................................................................................................ 616 Ejem

plo

de te

xto

Page 11: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 11

CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 621

30.WEBPARTS I: CONCEPTOS BÁSICOS Y CATÁLOGOS .................................................................................................................. 622

INTRODUCCIÓN ............................................................................................................................................................................. 622 WEBPARTMANAGER Y WEBPARTZONE .............................................................................................................................................. 623 MODOS DEL CONTROL WEBPARTMANAGER ........................................................................................................................................ 627 CONTROLES WEBPART ................................................................................................................................................................... 630 CATÁLOGOS WEBPART ................................................................................................................................................................... 635

PageCatalogPart .................................................................................................................................................................. 636 DeclarativeCatalogPart ......................................................................................................................................................... 639 ImportCatalogPart ................................................................................................................................................................ 641

31. WEBPARTS II: MODOS DE EDICIÓN Y CONEXIÓN. ............................................................................................................ 645

INTRODUCCIÓN ............................................................................................................................................................................. 645 MODO DE EDICIÓN ........................................................................................................................................................................ 645

ApareanceEditorPart y LayoutEditorPart ............................................................................................................................... 647 BehaviorEditorPart ............................................................................................................................................................... 650 PropertyGridEditorPart ......................................................................................................................................................... 653

MODO DE CONEXIÓN ..................................................................................................................................................................... 661 CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 667

32.WEBPARTS III: CREACIÓN DE WEBPARTS PERSONALIZADOS ................................................................................................... 668

INTRODUCCIÓN ............................................................................................................................................................................. 668 DEFINIENDO EL WEBPART ............................................................................................................................................................... 668 DEFINICIÓN DE LAS PROPIEDADES DEL WEBPART ................................................................................................................................... 669 CONSTRUCCIÓN DEL WEBPART ......................................................................................................................................................... 670 UTILIZANDO EL WEBPART ............................................................................................................................................................... 673 DEFINIENDO VERBOS PARA EL WEBPART ............................................................................................................................................. 675 RESTABLECIENDO LA CONFIGURACIÓN ................................................................................................................................................. 680

33.PERSONALIZACIÓN .................................................................................................................................................................. 681

INTRODUCCIÓN ............................................................................................................................................................................. 681 CREACIÓN DE PROPIEDADES DE PERSONALIZACIÓN ................................................................................................................................. 681 AGRUPACIÓN DE PROPIEDADES DE PERSONALIZACIÓN ............................................................................................................................. 685 DEFINICIÓN DE TIPOS ...................................................................................................................................................................... 688 MIGRACIÓN DE USUARIOS ANÓNIMOS ................................................................................................................................................ 693

34.INTERNACIONALIZACIÓN ......................................................................................................................................................... 695

INTRODUCCIÓN ............................................................................................................................................................................. 695 CREACIÓN DE FICHEROS DE RECURSOS ................................................................................................................................................. 695

Carpetas especiales .............................................................................................................................................................. 695 Internet Explorer: Preferencias de idioma .............................................................................................................................. 696 Fichero de recursos local ....................................................................................................................................................... 696 Fichero de recursos global ..................................................................................................................................................... 702

MANEJANDO EL IDIOMA EN TIEMPO DE EJECUCIÓN................................................................................................................................. 703 ESTABLECIENDO EL IDIOMA .............................................................................................................................................................. 704

35.ENTRADA/SALIDA CON FICHEROS Y STREAMS ......................................................................................................................... 707

INTRODUCCIÓN ............................................................................................................................................................................. 707 UNIDADES DE DISCO ....................................................................................................................................................................... 707 DIRECTORIOS................................................................................................................................................................................ 712 FICHEROS .................................................................................................................................................................................... 720 RUTAS ........................................................................................................................................................................................ 726 LECTURA Y ESCRITURA DE FICHEROS CON STREAMS ................................................................................................................................. 728 CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 732

36.DISTRIBUCIÓN DE APLICACIONES WEB .................................................................................................................................... 733

INTRODUCCIÓN ............................................................................................................................................................................. 733 INSTALACIÓN DE VISUAL STUDIO 2010 ............................................................................................................................................... 733 EL ENTORNO DE TRABAJO ................................................................................................................................................................ 736 MÉTODOS DE DISTRIBUCIÓN DE UNA APLICACIÓN WEB ........................................................................................................................... 736 Ej

empl

o de

text

o

Page 12: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 12

XCopy ................................................................................................................................................................................... 736 Copiar sitio Web ................................................................................................................................................................... 739 Publicar sitio Web ................................................................................................................................................................. 742 Programa de instalación ....................................................................................................................................................... 745

CASO PRÁCTICO: PLANTEAMIENTO .................................................................................................................................................... 749

37.CONFIGURACIÓN DE INTERNET INFORMATION SERVER .......................................................................................................... 750

INTRODUCCIÓN ............................................................................................................................................................................. 750 EL SERVIDOR WEB INTERNET INFORMATION SERVER .............................................................................................................................. 750 INSTALANDO IIS ............................................................................................................................................................................ 751 EL ADMINISTRADOR DE SERVICIOS DE INTERNET INFORMATION SERVER ....................................................................................................... 752 ELEMENTOS DE IIS ......................................................................................................................................................................... 754 ADMINISTRACIÓN DEL SITIO WEB ...................................................................................................................................................... 754

Sitio Web .............................................................................................................................................................................. 754 Directorio particular ............................................................................................................................................................. 755 Documentos ......................................................................................................................................................................... 756 Errores personalizados .......................................................................................................................................................... 757 Rendimiento ......................................................................................................................................................................... 757 Seguridad de directorios ....................................................................................................................................................... 757 Filtros ISAPI .......................................................................................................................................................................... 758 Encabezados HTTP ................................................................................................................................................................ 758 Extensiones de servidor ......................................................................................................................................................... 759 ASP .NET ............................................................................................................................................................................... 760

LA APLICACIÓN WEB ...................................................................................................................................................................... 761

38.ADMINISTRACIÓN Y CONFIGURACIÓN DE APLICACIONES WEB ............................................................................................... 764

INTRODUCCIÓN ............................................................................................................................................................................. 764 UNA CONFIGURACIÓN BASADA EN XML .............................................................................................................................................. 764 APLICANDO LA CONFIGURACIÓN ........................................................................................................................................................ 765 FORMATO DE LOS FICHEROS DE CONFIGURACIÓN ................................................................................................................................... 766

Sección de manejadores........................................................................................................................................................ 767 Sección de valores de configuración ...................................................................................................................................... 768

TAREAS COMUNES DE CONFIGURACIÓN ............................................................................................................................................... 769 Configuración general ........................................................................................................................................................... 770 Configuración de la página ................................................................................................................................................... 770 Configuración de la aplicación .............................................................................................................................................. 771 Cadenas de conexión ............................................................................................................................................................ 772 Configuración de la sesión .................................................................................................................................................... 773 Configuración de trazas ........................................................................................................................................................ 774 Errores personalizados .......................................................................................................................................................... 775 Web Services ........................................................................................................................................................................ 777 Globalización ........................................................................................................................................................................ 777 Compilación.......................................................................................................................................................................... 778 Identidad .............................................................................................................................................................................. 780 Manejadores HTTP ............................................................................................................................................................... 781 Modelo de proceso ............................................................................................................................................................... 784

INDICANDO LA CONFIGURACIÓN PARA UN RECURSO CONCRETO ................................................................................................................. 786 BLOQUEANDO VALORES DE CONFIGURACIÓN ........................................................................................................................................ 787 HERRAMIENTAS DE CONFIGURACIÓN .................................................................................................................................................. 788

Sitio Web de Administración ................................................................................................................................................. 788

39.INTRODUCCIÓN A ASP.NET AJAX ............................................................................................................................................. 791

AJAX ......................................................................................................................................................................................... 791 ASP.NET AJAX ........................................................................................................................................................................... 792

Microsoft AJAX Library .......................................................................................................................................................... 793 AJAX Extensions .................................................................................................................................................................... 794 AJAX Control Toolkit ............................................................................................................................................................. 799 AJAX Futures......................................................................................................................................................................... 799

RESUMEN .................................................................................................................................................................................... 800

40.JAVASCRIPT ............................................................................................................................................................................. 801 Ejem

plo

de te

xto

Page 13: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 13

SINTAXIS ..................................................................................................................................................................................... 802 Palabras reservadas.............................................................................................................................................................. 802 Variables .............................................................................................................................................................................. 803 Tipos de variables ................................................................................................................................................................. 803 Objetos nativos ..................................................................................................................................................................... 805 Declaración y uso de funciones ............................................................................................................................................. 807 Trabajo con objetos .............................................................................................................................................................. 809 JSON ..................................................................................................................................................................................... 810

CLASES ....................................................................................................................................................................................... 811 MANEJO DE EXCEPCIONES ................................................................................................................................................................ 812

41DOM Y BOM ............................................................................................................................................................................. 814

DOM......................................................................................................................................................................................... 814 Elementos principales de Dom .............................................................................................................................................. 814

BOM ......................................................................................................................................................................................... 828 Window ................................................................................................................................................................................ 829 document ............................................................................................................................................................................. 830 location ................................................................................................................................................................................ 830 navigator .............................................................................................................................................................................. 831 screen................................................................................................................................................................................... 832

XMLHTTPREQUEST ....................................................................................................................................................................... 835

43. MICROSOFT AJAX LIBRARY ..................................................................................................................................................... 842

LIBRARY ...................................................................................................................................................................................... 842 FUNCIONES GLOBALES .................................................................................................................................................................... 843 EXTENSIONES DE LOS TIPOS BÁSICOS JAVA ............................................................................................................................................ 845 SCRIPT ........................................................................................................................................................................................ 845

Extensiones de tipo matriz .................................................................................................................................................... 846 Extensiones de tipo booleano ................................................................................................................................................ 848 Extensiones de tipo fecha ...................................................................................................................................................... 848 Extensiones de tipo error ...................................................................................................................................................... 849 Extensiones de tipo número .................................................................................................................................................. 850 Extensiones de tipo objeto .................................................................................................................................................... 850 Extensiones de tipo cadena ................................................................................................................................................... 850

SISTEMA DE TIPOS JAVASCRIPT .......................................................................................................................................................... 851 BCL DE SCRIPTING ......................................................................................................................................................................... 852

Sys........................................................................................................................................................................................ 853 CASO PRÁCTICO: USO DE SERVICIOS WEB ............................................................................................................................................ 885

44.EXTENSIONES AJAX.................................................................................................................................................................. 886

SCRIPTMANAGER .......................................................................................................................................................................... 886 PERSONALIZACIÓN DEL CONTROL SCRIPTMANAGER ................................................................................................................................ 889 MANEJO DE OPERACIONES ASÍNCRONAS Y ERRORES ................................................................................................................................ 893 MANEJO DE SCRIPTS ....................................................................................................................................................................... 894 MANEJO DE SERVICIOS .................................................................................................................................................................... 896 GLOBALIZACIÓN Y LOCALIZACIÓN ....................................................................................................................................................... 896 OTROS EVENTOS ........................................................................................................................................................................... 897 SCRIPTMANAGERPROXY ................................................................................................................................................................. 897 TIMER ........................................................................................................................................................................................ 897 UPDATEPANEL .............................................................................................................................................................................. 898 CONSTRUCCIÓN DE UNA INSTANCIA UPDATEPANEL ................................................................................................................................ 899 GESTIÓN DE TRIGGERS .................................................................................................................................................................... 900

AsyncPostBackTrigger ........................................................................................................................................................... 901 PostBackTrigger ................................................................................................................................................................... 902

UPDATEPROGRESS ......................................................................................................................................................................... 903

45.AJAX CONTROL TOOLKIT.......................................................................................................................................................... 904

AJAX CONTROL TOOLKIT ................................................................................................................................................................ 905 ACCORDION ................................................................................................................................................................................. 906 ALWAYSVISIBLECONTROLEXTENDER ................................................................................................................................................... 907 ANIMATIONEXTENDER .................................................................................................................................................................... 907 Ej

empl

o de

text

o

Page 14: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 14

AUTOCOMPLETEEXTENDER .............................................................................................................................................................. 908 CALENDAREXTENDER...................................................................................................................................................................... 909 CASCADINGDROPDOWN ................................................................................................................................................................. 909 COLLAPSIBLEPANELEXTENDER .......................................................................................................................................................... 910 CONFIRMBUTTONEXTENDER ............................................................................................................................................................ 910 FILTEREDTEXTBOXEXTENDER............................................................................................................................................................ 911 MODALPOPUPEXTENDER ................................................................................................................................................................ 911 RATING ....................................................................................................................................................................................... 911 CASO PRÁCTICO: AJAX CONTROL TOOLKIT .......................................................................................................................................... 912

46. ............................................................................................................................................... ¡ERROR! MARCADOR NO DEFINIDO.

STUDIO ........................................................................................................................................ ¡ERROR! MARCADOR NO DEFINIDO.

47.RESOLUCIÓN CASOS PRÁCTICOS .............................................................................................................................................. 913

CAPÍTULO 2 ................................................................................................................................................................................. 913 CAPÍTULO 3 ................................................................................................................................................................................. 914 CAPÍTULO 4 ................................................................................................................................................................................. 916 CAPÍTULO 5 ................................................................................................................................................................................. 917 CAPÍTULO 6: CASO PRÁCTICO 1 ......................................................................................................................................................... 920 CAPÍTULO 6: CASO PRÁCTICO 2 ......................................................................................................................................................... 921 CAPÍTULO 7 ................................................................................................................................................................................. 923 CAPÍTULO 8 ................................................................................................................................................................................. 925 CAPÍTULO 10 ............................................................................................................................................................................... 927 CAPÍTULO 11 ............................................................................................................................................................................... 929 CAPÍTULO 12 ............................................................................................................................................................................... 930 CAPÍTULO 13 ............................................................................................................................................................................... 932 CAPÍTULO 15 ............................................................................................................................................................................... 933 CAPÍTULO 17 ............................................................................................................................................................................... 936 CAPÍTULO 18 ............................................................................................................................................................................... 941 CAPÍTULO 19 ............................................................................................................................................................................... 944 CAPÍTULO 22 ............................................................................................................................................................................... 945 CAPÍTULO 23 ............................................................................................................................................................................... 949 CAPÍTULO 24 ............................................................................................................................................................................... 951 CAPÍTULO 28 ............................................................................................................................................................................... 954 CAPÍTULO 27 ............................................................................................................................................................................... 957 CAPÍTULO 28 ............................................................................................................................................................................... 960 CAPÍTULO 29 ............................................................................................................................................................................... 962 CAPÍTULO 31 ............................................................................................................................................................................... 965 CAPÍTULO 35 ............................................................................................................................................................................... 968 CAPÍTULO 36 ............................................................................................................................................................................... 970 CAPÍTULO 38 ............................................................................................................................................................................... 971 CASO PRÁCTICO: USO DE SERVICIOS WEB ............................................................................................................................................ 971 CASO PRÁCTICO: AJAX CONTROL TOOLKIT .......................................................................................................................................... 975

Ejem

plo

de te

xto

Page 15: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 15

1. INTRODUCCIÓN A ASP .NET 4.0

Introducción

ASP NET 2.0 es la tecnología para el desarrollo de aplicaciones Web que ponemos encontrar en la nueva versión que ofrece Microsoft de su plataforma de desarrollo Microsoft .NET Framework 2.0. Este texto está pensado tanto para aque-llos lectores que ya conocen ASP .NET 1.x, u otra versión previa (ASP 1.0/2.0/3.0), como para los que no conocen nada del entorno de desarrollo de las páginas activas de servidor de Microsoft.

Nuestro objetivo va a ser centrarnos en la tecnología ASP .NET, aunque comentaremos brevemente, y cuando sea necesa-rio, algunos conceptos generales de la plataforma .NET (.NET Framework), ya que no debemos olvidar que es la plata-forma sobre la que se van a ejecutar las aplicaciones Web desarrolladas con páginas ASP .NET, es decir, las páginas ASP .NET no se van a ejecutar directamente sobre un sistema operativo determinado, sino que lo van a hacer sobre la plata-forma, denominada .NET Framework, que ofrece Microsoft.

La plataforma .NET ofrece una serie de herramientas y tecnologías necesarias para construir y desarrollar aplicaciones Web, así pues, las páginas ASP .NET se van a ejecutar dentro del entorno de ejecución que nos facilita el .NET Frame-work. Podríamos decir que ASP .NET es una parte de la plataforma .NET, y es esta parte la que se va a tratar en el pre-sente texto.

Para aquellos lectores que no conozcan la tecnología de desarrollo de las páginas ASP en cualquiera de sus versiones, voy a realizar una definición muy sencilla de lo que consiste la filosofía de la programación de aplicaciones Web con páginas ASP o ASPX.

La filosofía de ASP .NET resulta muy sencilla, en pocas palabras se puede definir de la siguiente forma: las páginas ASP .NET, también llamadas páginas activas, son páginas que contienen código HTML, script de cliente y un código que se ejecuta en el servidor, dando como resultado código HTML. Por lo tanto al cargar una página ASP .NET en nuestro nave-gador, en realidad no estamos cargando la página ASP .NET como tal, sino el resultado de la ejecución de la página, es decir la salida de la página ASP .NET, y como se ha apuntado anteriormente se trata de código HTML. Es decir, son páginas que se ejecutan en el servidor enviando como resultado al cliente código HTML.

El anterior párrafo está extraído completamente de un antiguo texto dedicado a ASP 3.0, el titulado “Programación para aplicaciones para Internet con ASP 3.0”, y es perfectamente aplicable a ASP .NET 4.0, pero este entorno de desarrollo de aplicaciones Web, va más allá presentando un completo entorno mucho más elaborado y completo, con lo que la afirma-ción de párrafo anterior se quedaría muy corta, ya que únicamente define uno de los aspectos de las páginas ASP .NET.

De forma más genérica, 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 ejecutarán 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, apoyándonos siempre en el nuevo entorno de desarrollo que nos ofrece de Microsoft, Visual Studio 2010.

Una vez realizada una definición más o menos de lo que son las páginas ASP .NET volvamos a tratar sobre la nueva ver-sión de ASP .NET.

Esta nueva versión de ASP .NET no ofrece unos cambios tan profundos como supuso el cambio de ASP 3.0 a ASP .NET 1.0, esta nueva versión de las páginas ASPX (así se denominan también a las páginas ASP .NET, utilizando su extensión), es una evolución lógica de ASP .NET 1.x (utilizamos 1.x para referirnos a las dos versiones anteriores de ASP .NET la versión 1.0 y la 1.1)

Por lo tanto ASP .NET 4.0 es la nueva versión que ofrece el .NET Framework para el desarrollo de aplicaciones Web, ya sean basadas en Internet, Intranet o Extranet. Como ya hemos adelantado, Microsoft también ofrece una nueva herramien-ta integral de desarrollo, Visual Studio 2010. Será con esta herramienta con la que desarrollaremos nuestras aplicaciones Web y por la tanto la comentaremos también en este texto. Como curiosidad comentaré al lector que la nueva versión del Ej

empl

o de

text

o

Page 16: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 16

.NET Framework de Microsoft recibió el nombre en clave (code-name) de Whidbey y la versión 2.0 de ASP .NET llego a denominarse ASP .NET Whidbey.

No veremos Visual Studio 2010 de forma íntegra, sólo veremos la parte que nos interesa y que nos afecta a la hora de desarrollar aplicaciones Web basadas en ASP .NET 4.0. Esta parte de Visual Studio 2010 (VS 2010) se denomina Micro-soft Visual Web Developer 2005. Esta nueva versión de Visual Studio nos ofrece un entorno de desarrollo muy cómodo para crear nuestras aplicaciones Web a través 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 2010, ya que esta será nuestra herramienta de trabajo. A lo largo del texto, según sea conveniente, se comentará el uso de Visual Studio 2010 para tareas concretas.

En este capítulo, además de realizar una introducción a ASP .NET 4.0. Si el lector no comprende alguno de los conceptos que vamos a adelantar no debe preocuparse, ya que más adelante, a lo largo del texto, se verán con mayor detalle.

Lenguajes de programación

ASP .NET 4.0 no es un lenguaje de programación, sino que es un entorno de programación o tecnología de desarrollo, pero no es un lenguaje. De hecho ASP .NET soporta distintos lenguajes, en el presente texto vamos a utilizar los lengua-jes C# (CSharp) y Visual Basic .NET, ya que son los lenguajes más populares entre todos los que soportan las páginas ASP .NET, y también son los más utilizados del .NET Framework.

El código intermedio es una característica común que poseen todas las tecnologías englobadas en la estrategia .NET de Microsoft, a la que lógicamente pertenece ASP .NET. Las páginas ASP .NET cuando reciben la primera petición se com-pilan automáticamente a un lenguaje intermedio que es conocido como Common Language Runtime (CLR), es decir, es un lenguaje común al que compilan todos los lenguajes que utilicemos en nuestras páginas ASP .NET, generando el mis-mo código, ya sea Visual Basic .NET, C# o JScript. Gracias a esta característica podemos obtener grandes ventajas en lo que a rendimiento en tiempo de ejecución se refiere, ya que la compilación de las páginas sólo se produce en la primera petición que se realiza sobre la página, o bien cuando el código fuente de la misma se ha modificado y necesita por lo tanto actualizarse, además el resultado de esta compilación permanece en caché para poder ser reutilizada.

Los ejemplos de código fuente que se mostraran en el texto se ofrecerán tanto en el lenguaje de programación C# como en el lenguaje VB .NET. Suponemos que el lector conoce la sintaxis de alguno de estos dos lenguajes, ya que abordar un lenguaje de programación queda fuera de los objetivos de este texto, que como sabemos todos trata sobre ASP .NET 4.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 ASP

Hasta la fecha nos podemos encontrar con seis versiones de la tecnología de las páginas activas de servidor de Microsoft, es decir, de ASP (Active Server Pages). Vamos a realizar un recorrido histórico a través de ASP, desde ASP 1.0 hasta ASP .NET 4.0.

La primera versión de las páginas activas (ASP 1.0), se incorporó como un añadido o ampliación 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 bastante interesante pero todavía era demasiado rudimentario y presenta limitaciones y problemas.

La primera versión de ASP era bastante interesante ya que se pasaba de la complejidad de los CGIs (Common Gateway Interface) a la sencillez de las páginas activas. ASP 1.0 supuso el inicio del desarrollo de aplicaciones Web con productos basados en tecnología Microsoft.

La versión 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 podemos instalar desde la extensión del sistema operativo de Windows NT denominada Windows NT 4.0 Option Pack, o más comúnmente Option Pack. Esta extensión del sistema operativo no sólo es aplicable a Windows NT, sino que también la podemos utilizar para Windows 95/98. Ej

empl

o de

text

o

Page 17: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 17

Se debe señalar 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 además de ofrecer la nueva versión de la tecnología ASP, permite configurar y administrar de forma sencilla nues-tras aplicaciones ASP. Además la figura de la aplicación ASP se encuentra mucho más clara que en la versión 1.0 de las páginas ASP, el servidor Web nos indicará claramente el alcance de una aplicación ASP determinada.

ASP 2.0 es una clara y necesaria evolución de ASP 1.0 incorporando la posibilidad de realizar páginas ASP transacciona-les, añadiendo para ello un nuevo objeto integrado denominado ObjectContext (objeto de contexto). ASP 2.0 ofrece un entorno más robusto y potente que la versión anterior para el desarrollo de aplicaciones Web.

Más 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 versión del servidor Web sino también de una nueva versión del sistema operativo Windows.

ASP 3.0 se encuentra disponible dentro de Windows 2000 en cualquiera de sus versiones (Professional, Server, Advanced Server). Dentro de Windows 2000 encontramos el componente Internet Information Services o Internet Information Ser-ver, que como todos los lectores sospechan es la nueva versión del servidor Web de Microsoft Internet Information Ser-ver. 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 evolución lógica de ASP 2.0, no supone ningún cambio radical, ofrece una serie de me-joras y novedades. Se añade un nuevo objeto integrado llamado ASPError, este nuevo objeto es utilizado para el trata-miento de errores.

Y por fin llegamos a la aparición del .NET Framework de Microsoft, que va a contener una nueva versión 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 conside-rar que se parecen en poco, ni siquiera podríamos considerar que se trata de ASP 4.0, ya que los cambios van más 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 versión del 1.0 .NET Frame-work.

ASP .NET es completamente compatible con ASP, podemos tener aplicaciones Web basadas en ASP y ASP .NET fun-cionando en el mismo servidor Web, que será Internet Information Server 5.0, las páginas ASP tienen la extensión .ASP y son procesadas por la DLL ASP.DLL y sin embargo las páginas ASP .NET poseen la extensión .ASPX y son procesa-das por el entorno de ejecución .NET Framework, que las transforma en el código intermedio, representado en este caso por la DLL ASPNET_ISAPI.DLL.

Como curiosidad comentaré a los lectores que en las primeros pasos de la plataforma .NET (beta 1 y versiones prelimina-res previas) ASP .NET se denominaba ASP+ y la propia plataforma poseía la denominación de NGWS (New Generation Windows Services, Nueva Generación de Servicios de Windows).

Después apareció la versión 1.1 del .NET Framework y con el la nueva versión de las páginas ASPX, ASP .NET 1.1, que como ocurría con ASP 2.0 y ASP 3.0, esta nueva versión 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 sucedía en la versión anterior, también aparece una nueva versión de la herramienta de desarrollo Visual Studio, en este caso se trata de la versión 2003.

Es ya con la nueva versión del Framework, la 2.0, cuando aparece ASP .NET 4.0, y al igual que sucedía con ASP 3.0 y ASP .NET 1.0, es perfectamente compatible con las versiones 1.x de las páginas activas, lo único que tenemos que hacer es instalar la nueva versión del Framework.

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 aplicación Web nos permite indicar a que versión del Ej

empl

o de

text

o

Page 18: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 18

Framework pertenece: a la 1.1 o a la 2.0, que se corresponderá con la versión de páginas ASPX. Esto lo podemos ver en la siguiente figura.

Figura 1

Como se puede desprender de la figura anterior, en un mismo servidor Web pueden convivir sin problemas las dos ver-siones 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 2010 sin ningún tipo de problema ni incompatibilidad, incluso odría-mos tener instalado Visual Studio 6.0.

Y para terminar con el siguiente apartado, como es de suponer también tenemos una nueva versión de la herramienta de desarrollo Visual Studio, que es la que vamos a utilizar en este texto y que no es otra que la versión 2005.

Novedades de ASP .NET 4.0

Como ya se ha adelantado los cambios en esta nueva versión de ASP no son tan dramáticos como los que se dieron con el cambio de versión de ASP 3.0 a ASP .NET 1.0, los lectores que conozcan ASP .NET 1.x lo tendrán bastante sencillo ya que la forma de desarrollar las aplicaciones Web y su filosofía permanecen intactas, sin embargo nos encontraremos con un gran número de mejoras y novedades.

Este apartado será muy útil para la audiencia conocedora de alguna versión previa de ASP .NET, ya que en un rápido vistazo se adelantarán todas las novedades, mejoras y cambios que nos ofrece la nueva versión de ASP .NET. Y para los lectores que no conozcan nada de ASP .NET les servirá para empezar a ponerse en contacto con el desarrollo de aplica-ciones Web y para ver algunas de las funcionalidades que nos ofrece ASP .NET y que serán tratadas en mayor detalle a lo largo de los distintos capítulos de este texto.

A través de los distintos puntos de este apartado se van a comentar las novedades que aporta ASP .NET 4.0 respecto a la versión 1.x, apoyándose en el nuevo entorno .NET Framework 2.0. Esta nueva versión de ASP .NET nos ofrece unas potentes características a la hora de desarrollar aplicaciones Web, pasemos a ver las más destacadas. El lector no debe preocuparse si no entiende alguno de los conceptos que aquí se comentan, ya que los veremos más adelante con mayor profundidad, este apartado servirá sobre todo a aquellos lectores que ya conozcan ASP .NET 1.x, para ver de un simple vistazo las novedades más destacables de ASP .NET 4.0

Nuevos controles de servidor En esta nueva versión de ASP .NET se ofrecen un gran número de nuevos controles de servidor, que se podrán utilizar para distintas tareas dentro del desarrollo de una aplicación Web, tenemos desde controles de acceso a datos hasta contro-les de navegación. Ej

empl

o de

text

o

Page 19: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 19

Para ver la gran cantidad de controles que ASP .NET pone a nuestra disposición únicamente tenemos que echar un vista-zo al cuadro de herramientas de Visual Studio 2010, podemos ver que aparecen un gran número de ellos agrupados por categorías según su funcionalidad. En la siguiente figura podemos ver los grupos de controles de servidor que nos ofrece ASP .NET 4.0 desde VS 2010.

Figura 2

No se trata únicamente de nuevos controles mejorados, sino que aparecen completas categorías de controles como pueden ser los controles de inicio de sesión o los de navegación (denominados por VS 2010 de exploración). Vamos a comentar brevemente las distintas categorías de nuevos controles de ASP .NET 4.0.

El acceso a datos desde ASP .NET 4.0 ahora se puede realizar en unos pocos pasos de manera muy sencilla, sin la necesi-dad de escribir ni una sólo línea de código 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 conexión con las fuentes de datos, denominados controles de fuente u origen de datos (data source controls), como podría ser el control SqlDataSource, y los que nos ofrecen un interfaz de usuario para representar gráficamente los datos, denominados controles conectados a datos (data bound controls), como puede ser el control GridView.

En la versión 1.x de ASP .NET ya existían los controles de acceso a datos, en ASP .NET 4.0 aparecen nuevos controles, pero ya existía esta categoría. Una categoría completamente nueva son los controles de navegación. Los controles de na-vegación ofrecen un interfaz de usuario que permite la navegación a través de las distintas páginas de un sitio Web, así como la presentación de la información de forma jerárquica. Un ejemplo de estos controles es el nuevo control Site-MapPath, que nos permite navegar entre páginas, y el control TreeView, que muestra la información de forma jerár-quica, en estructura de árbol organizada en nodos, otro control de navegación sería el control Menu, que nos permite construir menús navegables.

También aparece una nueva categoría de controles llamada de inicio de sesión, estos controles nos van a ofrecer un inter-faz y funcionalidad para realizar labores de autenticación y autorización dentro de nuestro sitio Web. Dentro de este grupo tenemos por ejemplo, el control Login que nos ofrece un interfaz gráfico consistente en las cajas de texto y botones para indicar un nombre de usuario y una contraseña, además de toda la lógica para autenticar usuario es nuestra aplicación Web, y el control ChangePassword que nos provee de un formulario para realizar el cambio de contraseña, con toda la lógica correspondiente que permitirá realizar esta tarea de forma automática.

El grupo de controles llamado Elementos Web también podemos encontrarlo por su nomenclatura en inglés, que suele ser más común, 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 distribución 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 usua-rio podrá modificar en tiempo de ejecución las propiedades de los controles WebPart.

Dentro del grupo de controles estándar también 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 más complejos como puede ser el control Wizard, que permite definir una serie de pasos en Ej

empl

o de

text

o

Page 20: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 20

forma de un asistente. En general los nuevos controles estándar que se han añadido a ASP .NET 4.0 nos van a permitir ahorrarnos mucho trabajo debido a las funcionalidades que ofrecen.

Master Pages Si traducimos literalmente esta nueva característica de ASP .NET 4.0 obtenemos la expresión de “páginas maestras”, y eso mismo es lo que nos ofrece esta nueva funcionalidad, la posibilidad de crear plantillas para las páginas ASPX de nuestra aplicación Web. Un ejemplo claro sería la utilización de una Master Page para definir la cabecera de una sitio Web. Las páginas maestras tendrán la extensión .MASTER. La traducción “oficial” que se ha realizado del término Mas-ter Pages es el de página principal, traducción muy poco feliz en mi opinión, por lo que las llamaremos páginas maestras o simplemente páginas Master.

De esta forma podemos definir una página Master o maestra para que todas nuestras páginas tengan un aspecto similar y coherente dentro de la aplicación Web, con esto conseguimos, además de mantener una coherencia y uniformidad en todo el aspecto del sitio Web, un mantenimiento sencillo en lo que al aspecto y presentación de un sitio Web se refiere, ya que si necesitamos cambiar alguna característica del sitio Web no tenemos que ir página a página, solo lo cambiaremos en la página maestra.

Pero las Master Pages no solo nos ofrecen un aspecto uniforme para el sitio Web, también pueden contener código, por lo tanto también se pueden añadir funcionalidades comunes a toda la aplicación Web. Por lo tanto podemos decir que tene-mos un diseño, código y contenido reutilizable.

Para aquellos lectores que ya conocían alguna versión anterior de ASP, comentaré que las Master Pages nos van a ofrecer una funcionalidad que anteriormente obteníamos utilizando otros mecanismos como pueden ser los ficheros include y los controles de usuario de ASP .NET.

Temas y Skins Los temas y skins o también llamadas máscaras, es un mecanismo que ofrece ASP .NET para establecer un aspecto común a los distintos controles de los formularios de los que consta una aplicación Web, los temas de ASP .NET los po-demos asemejar a las hojas de estilo en cascada (hojas CSS), ya que en realidad son características del aspecto que se van a aplicar a los controles Web. Un tema va a estar compuesto de uno o más ficheros de máscara (tienen la extensión .skin) y por las hojas de estilo e imágenes que se utilicen.

Los temas se encuentran en una carpeta especial de la aplicación Web llamada App_Themes. Veremos a lo largo del texto que además de esta carpeta especial, las aplicaciones Web de ASP .NET van a tener otras carpetas especiales con otra funcionalidad distinta.

En un fichero de máscara se van a definir los valores de las propiedades de los controles a los que queremos que afecte la máscara, así si queremos definir las propiedades que van a tener los controles Label de nuestras páginas ASPX, debe-remos definir un control Label con los valores de las propiedades correspondientes dentro del fichero .skin.

Al igual que sucedía con las Master Pages, los temas y skins mejoran el mantenimiento de una aplicación Web, ya que todos los estilos y aspecto de las páginas ASPX que forman parte de la aplicación se encuentran centralizados.

Personalización ASP .NET 4.0 ofrecen una serie de servicios de personalización (perfiles) que van a ayudar a que la experiencia del usua-rio en la aplicación Web sea más personalizada, permitiéndonos mantener las preferencias de los usuarios de nuestra apli-cación Web, basándose en un completo mecanismo de perfiles. Esto lo conseguiremos a través de nuevo objeto denomi-nado Profile que nos ofrece ASP .NET 4.0.

Internacionalización En el área de desarrollo de aplicaciones Web, debido a las características de las aplicaciones Web, podemos vernos algu-na vez en la tarea de tener que diseñar una aplicación que sea multilenguaje, de forma que en el servidor Web tengamos una única aplicación ejecutándose y dependiendo de los clientes que accedan esté en un idioma o en otro

ASP .NET 4.0 nos ofrece la característica de internacionalización, lo que hace más sencillo acometer una tarea de este tipo. Para ello ASP .NET pone a nuestra disposición los ficheros de recursos (.RESX), estos ficheros de recursos podrán Ej

empl

o de

text

o

Page 21: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 21

ser de dos tipos, locales y globales, lo primeros se utilizarán en una página ASPX concreta y los segundos serán accesi-bles por todas las páginas ASPX presentes en la aplicación Web.

Existirán varios juegos de ficheros de recursos, uno por idioma que queramos utilizar en nuestra aplicación Web, en estos ficheros de recursos podemos definir todos los literales que aparecen en la aplicación, y como ya se ha dicho existirá un fichero de recurso para cada idioma.

Aunque los ficheros de recursos ya existían en ASP.NET 1.x, no se encontraban tan integrados dentro de la herramienta de desarrollo ni tampoco dentro de las páginas ASPX.

Visual Studio 2010 nos ofrece la utilidad del editor de ficheros de recursos.

También podremos detectar de manera automática el idioma preferido que ha elegido el usuario en su navegador.

Nuevo modelo de separación de código En versiones anteriores de ASP .NET 1.x ya se realizaba la separación entre la lógica de presentación y la lógica de nego-cio, haciendo uso del mecanismo que se denominaba Code-Behind. Mediante esta característica todo el código HTML y ASP .NET que se correspondía con el interfaz de usuario se encontraba en la página ASPX a la que se le asociaba un fichero de código que era una clase que contenía todo el código para la lógica de negocio.

La filosofía de la separación entre el código de la lógica de negocio y de presentación no ha variado, lo que cambia es la forma de llevarlo a cabo. A la página ASPX también se le asocia un fichero de clase, pero en este caso se trata de una clase parcial, aparece un nuevo modificador para las clases llamado partial. Una clase parcial permite dividir el código que define a la clase en varios ficheros. De esta forma el fichero de la clase que se asocia a la página ASPX contiene me-nos líneas de código ya que se compila de forma conjunta con la propia página, y por lo tanto no se necesita declarar en la clase los distintos controles que contiene la página ASPX. Aludiendo a esta característica Microsoft indicaba que se re-ducía el número de filas de código fuente en un 70%, con lo que el código es más legible y más sencillo de mantener.

Las clases parciales en general son una nueva característica que ofrece el .NET Framework en su versión 2.0.

Respecto a la utilización de este modelo de separación de código se puede hacer la siguiente apreciación: este modelo no es obligatorio, aunque si recomendable, ya que la lógica de presentación queda en la página ASPX y la lógica de negocio (acceso a datos, tratamiento de eventos, funcionalidad, operaciones, etc.) queda en el fichero de la clase (con las extensio-nes .VB o .CS según el lenguaje utilizado) que se ha asociado a la página ASP .NET. Esto permite que el código sea más claro y más sencillo de mantener, además estas ventajas se reafirman con el nuevo modelo de separación de código, lla-mado por algunos autores Code-Beside en contraposición al modelo de ofrecían las versiones 1.x de ASP .NET llamado como ya sabemos Code-Behind.

Este modelo de separación de código que hemos introducido en este apartado, y que más delante retomaremos en mayor detalle para mostrar ejemplos concretos de código, ya hemos dicho que no es obligatorio, pero es el modelo de programa-ción de páginas ASPX que ofrece por defecto el entorno de desarrollo Visual Studio 2010, aunque al añadir una nueva página ASPX nos permite seleccionar, mediante un check, si queremos hacer uso del modelo de separación de código o no. Si desmarcamos esta casilla se empleará para la página ASP .NET el modelo de código que encontramos en las anti-guas versiones ASP hasta de la aparición de la tecnología .NET. Literalmente, tal como vemos en la imagen inferior en la casilla aparece el texto Colocar el código en un archivo independiente.

Ejem

plo

de te

xto

Page 22: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 22

Figura 3

Si la casilla anterior está seleccionada además de añadirse el fichero .ASPX al proyecto de Visual Studio 2010, se añade un segundo fichero llamado igual que la página ASP .NET pero con la extensión .ASPX.VB ó .ASPX.CS según el lenguaje utilizado, este será el fichero de la clase de la página y que estará asociado a la misma.

Pero si desmarcamos la casilla al añadir una nueva página ASPX se utilizará otro modelo de código, este modelo de códi-go se denomina código en línea (inline coding) y en este caso no existe separación entre la lógica de presentación y la de negocio, todo el código se encuentra en la página ASPX. Aunque VS 2010 soporta este estilo de codificación, si desmar-camos la casilla de la imagen anterior, como ya hemos dicho es mejor no utilizarlo. Visual Studio 2010 para este modelo de codificación incluso ofrece la característica de intellisense, ayuda inteligente que aparece cuando estamos escribiendo código para la página y nos indica las propiedades, métodos, parámetros, etc., que podemos utilizar en una situación de-terminada.

PostBack entre distintas páginas Realizar un Post de una página ASPX significa que es enviada al servidor para su tratamiento, será en este envío cuando se traten los eventos correspondientes y se ejecute el código de servidor que se encuentre asociado, además se inicia el ciclo de eventos de la página (Init, Load, PreRender, etc.). Y un PostBack es simplemente realizar un Post sobre la misma página, es decir, reenviar la página al servidor.

En las antiguas versiones de ASP (1.0/2.0/3.0), se podía realizar un post, es decir, enviar la página, sobre una página dis-tinta a la actual, por lo tanto la página de destino podía obtener los datos del formulario que existían en la página de ori-gen y realizar el tratamiento que proceda. En ASP .NET esto no es posible, los post/postback o envíos de página se reali-zan siempre sobre la página actual, es decir, no hay posibilidad de enviar el formulario a una segunda página, siempre se hace sobre la misma, recargándose.

Con ASP .NET 4.0 si que es posible realizar un PostBack sobre una segunda página, y desde esta segunda página ASPX se puede tener acceso al formulario (Web Form) de la primera página. ASP .NET 4.0 nos ofrece la propiedad PostBack Url para indicar la página ASPX a la que deseamos enviar el formulario, es decir, la página ASP .NET sobre la que rea-lizaremos el Post, y mediante la propiedad PreviousPage de la clase Page tendremos acceso al formulario de la pági-na de origen desde la página sobre la que se hace el PostBack o envío del formulario.

Nuevos eventos de las páginas ASPX Las páginas ASP .NET tienen una serie de eventos que se producen dentro de un orden determinado en lo que se puede definir como el ciclo de vida de una página ASPX, es decir, cada vez que se carga una página se ejecutarán siempre unos eventos determinados. En la versión 2.0 de ASP .NET se incluyen seis nuevos eventos de este tipo.

Veamos brevemente cada uno de estos nuevos eventos por orden de ejecución.

El primero de ellos es PreInit, que se ejecutará en el momento anterior al que la página es inicializada; luego nos en-contramos con InitComplete que se ejecutará cuando se ha completado la inicialización de la página a este evento le Ej

empl

o de

text

o

Page 23: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 23

sigue PreLoad, que indica el instante inmediatamente anterior al momento en el que la página se carga en memoria; el siguiente es LoadComplete, que indica que la página se ha cargado completamente en memoria; más adelante se ejecu-ta el evento PreRenderComplete, este se ejecutará justo en el momento anterior en el que la página se muestra en el navegador Web.

Y llegamos al último evento en orden de ejecución de los nuevos eventos del ciclo de vida de una página, este último evento se denomina SaveStateComplete, y se ejecuta cuando la página ha terminado de guardar toda la información del ViewState, es decir, la información relativa al estado y valores de las propiedades de los controles de la página. El concepto de ViewState lo volvemos a tratar un poco más adelante.

Y si unimos estos nuevos eventos de la página, con los que ya existían en las versiones anteriores de ASP .NET, tenemos el siguiente esquema de ejecución de eventos del ciclo de vida de una página ASPX.

1. PreInit

2. Init

3. InitComplete

4. PreLoad

5. Load

6. LoadComplete

7. PreRender

8. PreRenderComplete

9. SaveStateComplete

10. UnLoad

Se debe aclarar que estos no son todos los eventos que ejecuta una página ASPX, estos son solo los eventos que pertene-cen a su ciclo de vida y que se ejecutan siempre, luego tenemos otros eventos que se lanzarán en situaciones muy particu-lares como pueden ser AbortTransaction o CommitTransaction, cuando estamos utilizando transacciones en nuestra página, o bien el evento Error, que se lanzará cuando se produce un error dentro de la página ASPX. Todos los eventos los veremos de forma completa cuando tratemos el objeto Page, este objeto es una clase del .NET Framework que representa a la página ASPX actual.

Soporte para manejar el foco de la página ASP .NET 4.0 ofrece una serie de características para poder manejar de forma conveniente y tener control sobre el foco de los controles Web de nuestra página ASPX. El conjunto de facilidades que nos ofrece ASP .NET 4.0 para tratar el foco dentro de las páginas ASP .NET se denomina API Focus. Este API nos permite controlar el foco sobre los controles de un formulario Web, ya sea de forma declarativa o bien a través del código de servidor en tiempo de ejecución.

Así por ejemplo podemos establecer el foco sobre un control Web de servidor lanzando sobre él su método Focus(). A la hora de definir un formulario Web en la página ASPX podemos utilizar su atributo DefaultFocus para indicar el control Web que poseerá el foco al cargarse la página.

Nuevas características del código de cliente ASP .NET aporta una serie de mejoras a la hora de utilizar código de cliente en las páginas ASPX. Una de las mejoras más interesantes es la de permitir ejecutar código de servidor desde código de cliente, es lo que se denomina Callbacks desde el cliente.

Se permite realizar una llamada a un método de código de servidor desde código de cliente (javascript) sin tener que rea-lizar un PostBack de la página, es decir, sin tener que recargar la página, esta característica se denomina también llamadas fuera de banda.

Con un Callback de código cliente se envía una petición al servidor, sin recargar la página, y luego el navegador recibe la respuesta, y en ese momento el código cliente (javascript), mediante DHTML (Dynamic HTML) muestra la respuesta en la página. Ej

empl

o de

text

o

Page 24: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 24

Esta característica se basa en la capacidad del navegador Web de soportar llamadas fuera de banda a través del protocolo XMLHTTP. Con esto se consigue enviar una petición simple sin tener que ir enviando y recibiendo la página completa.

Otras nuevas características son más sencillas, como puede ser la posibilidad de indicar en el objeto Button mediante la propiedad OnClientClick, el método que se ejecutará del código cliente cuando se produzca el evento Click del botón o como puede ser atributo

MaintainScrollPositionOnPostBack de la directiva Page, que si le asignamos el valor True se mantendrá la posición del scroll de la página en el navegador en distintas recargas (PostBacks) de la misma.

Directorios de una aplicación ASP .NET En ASP .NET se introducen una serie de nuevos directorios especiales, que tendrán un uso determinado dentro de las aplicaciones ASP .NET. Esta no es una idea nueva, ya que en ASP .NET 1.x ya existía un directorio especial, era el di-rectorio BIN, que era utilizado para contener los assemblies de los que hacía uso la aplicación ASP .NET, recordamos que un assemblie (ensamblado) es una DLL de un componente compilado. Al aparecer estas nuevos directorios especia-les, no quiere decir que el directorio BIN deje de utilizarse, este directorio podrá seguir utilizándose en las aplicaciones Web de ASP .NET 4.0.

Desde el propio entorno de desarrollo Visual Studio 2010 se ofrece soporte para la creación de estos directorios de la aplicación Web. Si pulsamos con el botón derecho del ratón sobre la solución dentro del explorador de soluciones de VS 2010 veremos que en le menú contextual aparece el elemento Agregar carpeta ASP .NET, y si vamos a esta opción de menú aparecen otras subopciones que se corresponden con los directorios que podemos crear, esto se puede apreciar en la siguiente figura.

Figura 4

Vamos a pasar a comentar brevemente cada uno de los nuevos directorios que presenta ASP .NET para desarrollar aplica-ciones ASP .NET

1. App_Code: la labor principal de esta carpeta es la de contener las clases de la aplicación Web. Todas las clases que contenga esta carpeta serán accesibles desde cualquier página ASPX de la solución.

2. App_Data: esta carpeta va a contener los almacenes de datos utilizados por la aplicación, podrán contener fiche-ros de SQL Server (.MDF), Access (.MDB), ficheros XML.

3. App_Themes: esta carpeta contendrá los ficheros necesarios (ficheros .CSS y ficheros .SKIN) que forman par-te de un tema. Existirá un subdirectorio dentro de la carpeta App_Themes por cada uno de los temas definidos, y estos temas se podrán aplicar a las páginas que forman parte de la aplicación ASP .NET.

4. App_GlobalResources: aquí podremos encontrar los ficheros de recursos globales (.RESX). Recordamos que estos ficheros nos permiten definir de forma global a la aplicación los textos en un lenguaje determinado.

5. App_LocalResources: este directorio tiene la misma función que el anterior, pero en este caso albergará los ficheros de recursos locales, es decir, aquellos a los que tendrán acceso únicamente las páginas determinadas de forma local. Ej

empl

o de

text

o

Page 25: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 25

6. App_WebReferences: este es el nuevo nombre que recibe el directorio encargado de contener las referencias a los servicios Web utilizados dentro de la aplicación ASP .NET, en versiones anteriores de Visual Studio se de-nominaba Web References.

7. App_Browsers: esta carpeta contiene ficheros .BROWSER, estos ficheros son ficheros en formato XML que contienen las características de los distintos navegadores Web, estos ficheros nos van a servir para identificar las funciones que poseen los navegadores que hacen peticiones a nuestro sitio Web.

En la siguiente figura se muestra el aspecto que tendría una aplicación ASP .NET, dentro del explorador de soluciones de VS 2010, con una serie de carpetas ASP .NET definidas.

Figura 5

Como sucede con casi todo lo comentado en este apartado, más adelante retomaremos las carpetas ASP .NET y las utili-zaremos según sea conveniente.

Nueva sintaxis ASP .NET 4.0 nos provee con una nueva sintaxis para calcular expresiones dentro de las páginas ASPX. Esta sintaxis tiene el siguiente aspecto <%$ %> y se utiliza en diversos escenarios: para obtener cadenas de conexión definidas en el fichero de configuración Web.config, para obtener literales definidos en ficheros de recursos, para acceder a valores de configuración de la aplicación y para obtener valores almacenados en perfiles.

Esta sintaxis la veremos a lo largo de los distintos ejemplos de código dentro del texto según sea necesaria. Esta sintaxis se denomina Expression Builders.

Nuevas directivas de las páginas ASPX Como consecuencia de algunas de las novedades vistas en los puntos anteriores, ASP .NET 4.0 ha tenido que incorporar nuevas directivas a las páginas ASPX para poder implementar algunas de las nuevas características que ofrece.

Así por ejemplo para definir los atributos específicos de una Master Page, ASP .NET 4.0 presenta la nueva directiva Master. Esta directiva es muy similar a la directiva Page de las páginas ASPX, pero en este caso es específica de las Master Pages. También en relación con las Master Pages tenemos la directiva MasterType, esta directiva en contrapo-sición a la anterior es para utilizar en las páginas ASPX “normales”, y no en las maestras. Ej

empl

o de

text

o

Page 26: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 26

La directiva MasterType asocia un nombre de clase a una página maestra, de estar forma se consigue tener una refe-rencia fuertemente tipada a la Master Page y así acceder a sus atributos o métodos.

Distribución de la aplicación Esta característica, además de ser nueva en ASP .NET 4.0, también se encuentra muy relacionada con VS 2010, ya que es este entorno de desarrollo el que nos ofrece una utilidad para realizar la publicación de un sitio Web. En ASP .NET 1.x la única forma de distribuir una aplicación Web era copiando tal cual el directorio virtual en el que se encontraba, y situán-dolo en el servidor Web deseado, o bien utilizando un asistente de distribución.

Ahora desde VS 2010 podemos utilizar el asistente de publicación del sitio Web para elegir la localización de la publica-ción y también la forma en que se generará el sitio Web, si permite la actualización o no.

En la siguiente figura se puede ver el asistente de publicación del sitio Web que nos ofrece Visual Studio 2010.

Figura 6

Además de esta herramienta, VS 2010 ofrece también la posibilidad de copiar un sitio Web como tal, sin precompilarlo como en el caso de la utilidad de publicar sitio Web, mediante la utilidad Copiar sitio Web podemos conectarnos a un sitio Web remoto y copiar nuestra aplicación ASP .NET.

Visual Studio 2010 Se ha incluido este apartado dentro de las novedades de ASP .NET 4.0 para dar relevancia a la nueva versión de esta herramienta de desarrollo, ya que ofrece un gran número de ayudas para el desarrollo de una aplicación Web con ASP .NET. El módulo de Visual Studio 2010 que nos permite desarrollar aplicaciones Web es el denominado Microsoft Visual Web Developer.

Algunas de las ayudas y utilidades que nos ofrece VS 2010 ya las hemos comentado en anteriores puntos, y podemos destacar las siguientes:

1. Copia de sitio Web.

2. Publicación de sitio Web.

3. Sistema gestor de base de datos SQL Server 2005 Express.

4. Servidor Web integrado denominado con el siguiente nombre clave: Cassini.

5. Editor de ficheros de recursos.

6. Intellisense mejorado.

7. Smart Tags, etiquetas inteligentes que nos permitirán configurar de manera rápida algunos controles Web.

8. Navegador de etiquetas, que nos permitirá desplazarnos de forma muy sencilla en el código HTML y ASP .NET de una página ASPX. También conoceremos en qué lugar de la página nos encontramos situados. Ej

empl

o de

text

o

Page 27: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 27

9. Asistencia y notificación de errores.

10. Validación del código HTML.

Debido a todas estas características, veremos más tarde que se propone VS 2010 como material necesario para seguir el texto

Precompilación de páginas ASP .NET 4.0 ofrece una nueva herramienta que permite precompilar todas las páginas de una aplicación Web antes de ser distribuida, esta herramienta se llama aspnet_compiler.exe. Al precompilar una página ASPX obtenemos las siguientes ventajas: la primera petición de la página que se realice se ejecutará igual de rápido que cualquier otra y se evitan que aparezcan errores de compilación en el servidor Web de producción.

Esta precompilación también es llevada a cabo por la herramienta de publicación de sitio Web de VS 2010 y que hemos comentado en un punto anterior. Desde esta herramienta se nos brinda la posibilidad de indicar si deseamos que las pági-nas ASPX sean modificables en el servidor Web de destino o no (Permitir que este sitio precompilado se actualice). Si indicamos que no queremos que sean modificables las páginas ASPX, protegeremos todo el código fuente de nuestra aplicación Web, ya que las páginas ASPX carecerán de contenido y se harán uso de una serie de DLLs en su lugar. De esta forma no se podrá modificar nada, ni siquiera la lógica de presentación, de hecho si abrimos en el servidor en el que se ha publicado el sitio Web, alguna de las páginas ASPX para ver su código veremos el siguiente mensaje de adverten-cia.

Éste es un archivo marcador generado por la herramienta de precompilación y que no se debería eliminar

Código fuente 1

Por lo tanto otra ventaja que obtenemos al precompilar nuestra aplicación Web de esta manera es que el código fuente de las páginas y de las clases no queda expuesto.

Mejora del ViewState El ViewState es el mecanismo que ofrece ASP .NET (ya en su primera versión 1.0) para mantener el estado de los contro-les de la página entre distintas llamadas a la página, es decir, en los múltiples PostBacks se mantienen de forma automáti-ca los valores y propiedades de los controles Web presentes en la páginas ASPX, sin tener que escribir el desarrollador una sola línea de código.

Es necesario este mecanismo para mantener el estado de los controles, ya que el entorno en el que se ejecutan las páginas ASPX es el protocolo HTTP, y este es un protocolo sin estado, las distintas llamadas que se realizan a un servidor Web son siempre independientes entre sí para el servidor, por lo tanto no mantiene el estado.

La forma que tiene ASP .NET de implementar este mecanismo es utilizar un campo oculto (hidden) dentro del formulario Web. Este campo oculto es enviado junto con el resto de campos del formulario cuando el usuario realizar un envío del formulario al servidor, y ASP .NET es capaz de interpretar la información almacenada en el campo oculto para utilizarla a la hora de devolver de nuevo la página al navegador y construirla teniendo en cuenta el estado anterior en el que se encon-traba.

Para ver el aspecto que tiene el ViewState no tenemos nada más que cargar en nuestro navegador una página ASPX y seleccionar la opción de ver el código fuente, veremos algo similar a lo siguiente, el tamaño de la información incluida en este campo variará según el número de campos que existan en el formulario de la página.

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTY1NjkyNTQ5NmRkiJJCpebHsDGlY+LCIvg2xt5IHZs=" />

Código fuente 2

El problema que tiene el ViewState es que el tamaño de la información que se almacena en el campo oculto puede crecer bastante, haciendo que la carga de la página ASPX sea más lenta. Pero en la versión 2.0 de ASP .NET se ha optimizado el mecanismo de ViewState de tal manera que ha llegado a reducirse en un 50% el tamaño de la información generada res-pecto a la versión 1.1 de ASP .NET. Si queremos beneficiarnos de esta mejora en el rendimiento de ASP .NET 4.0 úni-camente tenemos que recompilar nuestra aplicación ASP .NET 1.x en Visual Studio 2010. Ej

empl

o de

text

o

Page 28: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 28

API de configuración En esta nueva versión de ASP .NET se nos provee con un nuevo API para la manipulación de los ficheros de configura-ción de ASP .NET, es decir, los ficheros Web.config y machine.config, esto nos permite escribir y desarrollar nuestra propias aplicaciones para acceder a la configuración de las aplicaciones ASP .NET.

Un ejemplo práctico de utilización de este API de configuración lo tenemos si desde Visual Studio 2010 ejecutamos la opción de menú Sitio Web|Configuración de ASP .NET, esta acción lanzará la ejecución de una aplicación Web que hace la función de herramienta de administración de la aplicación Web que en ese momento tenemos cargada en VS 2010, en la siguiente figura se puede ver el aspecto de la misma.

Figura 7

Desde esta herramienta de administración podemos realizar muchas labores de configuración, que trataremos en detalle en el capítulo correspondiente.

Consola MMC de administración En el apartado anterior hicimos referencia la herramienta de administración basada en Web que nos ofrecía VS 2010, esta no es la única forma de administrar nuestra aplicación Web, de hecho en un entorno de producción real la forma más común de realizar las labores de administración y configuración de un sitio Web es a través del la herramienta de admi-nistración del propio servidor Web IIS (Internet Information Services).

ASP .NET 4.0 ofrece una nueva consola MMC (Microsoft Management Console) integrada como parte de la administra-ción del servidor IIS. Desde esta herramienta integrada dentro de IIS tendremos acceso a todas las posibilidades de confi-guración que nos ofrecen los ficheros de configuración de la aplicación ASP .NET. En la se puede ver el aspecto que pre-senta esta nueva consola.

Ejem

plo

de te

xto

Page 29: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 29

Figura 8

Soporte para 64 bits ASP .NET 4.0 da completo soporte para los procesadores de 64 bits, aprovechando las características que éstos ofrecen, y las aplicaciones Web de ASP .NET 4.0 se comportarán perfectamente como aplicaciones de 64 bits.

Como puede ver el lector son muchas las mejoras y novedades que aporta esta nueva versión de ASP .NET, esta ha sido una visión muy general de las novedades que presenta ASP .NET 4.0, en los siguientes capítulos iremos entrando en los distintos detalles.

Material necesario

El único material necesario para seguir el texto, ya lo hemos adelantado antes, es la herramienta de desarrollo Visual Stu-dio 2010 y en concreto el módulo denominado Microsoft Visual Web Developer 2005.

VS 2010 nos ofrece además del .NET Framework 4.0, el servidor de base de datos SQL Server 2005 Express y el servidor Web Cassini (denominado también Servidor Web de desarrollo dentro de VS 2010), por lo tanto podemos seguir el texto y desarrollar aplicaciones Web en las versiones Home y Professional de Windows XP, así como desde Windows 2003 Server, ya que no es necesario contar con SQL Server ni con el servidor Web Internet Information Services.

Como curiosidad le comentaré al lector que si ejecuta una aplicación Web desde Visual Studio 2010 verá que en la parte derecha de la barra de tareas del sistema operativo a parece un icono amarillo ( ), que es el que representa al servidor Web Cassini. Si pulsamos con el botón derecho del ratón y seleccionamos la opción Propiedades veremos una ventana que representa a este servidor Web de desarrollo, y desde esta ventana tenemos la posibilidad de parar su ejecución.

Ejem

plo

de te

xto

Page 30: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 30

Figura 9

A lo largo del texto iremos abordando distintos aspectos de Visual Studio 2010 según vaya siendo necesario a la hora de realizar alguna tarea dentro del desarrollo de aplicaciones Web con ASP .NET 4.0.

Con este último apartado damos por finalizado este capítulo de introducción a la tecnología ASP .NET 4.0. En el siguien-te capítulo veremos una serie de conceptos generales sobre la orientación a objetos y los lenguajes orientados a objetos.

Ejem

plo

de te

xto

Page 31: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 31

2. PRIMEROS PASOS CON ASP .NET 4.0

Introducción

Dejamos el aspecto teórico de los dos capítulos anteriores, y pasamos a punto de vista más práctico. En este capítulo se va a comentar paso a paso la creación de una aplicación Web con Visual Studio 2010, también se describirá el entorno de trabajo óptimo que debemos tener para seguir el texto satisfactoriamente.

También crearemos nuestra primera página ASPX y se comentará el entorno de desarrollo que nos ofrece VS 2010.

A partir de este capítulo empezaremos a tratar en detalle los distintos elementos de ASP .NET 4.0, que adelantamos bre-vemente en el capítulo de introducción a esta nueva versión de las páginas ASP .NET.

El entorno de trabajo

Como requisito indispensable para poder seguir el texto correctamente y poder desarrollar los distintos ejemplos y casos prácticos que en él aparecen, es necesario tener instalado Visual Studio 2010, es decir, la última versión del entorno inte-grado de desarrollo que ofrece Microsoft para su plataforma .NET 4.0.

Ya hemos visto que la instalación de Visual Studio 2010 es un proceso muy sencillo.

Además del entorno de desarrollo integrado (IDE), al instalar VS 2010 se instalan dos elementos fundamentales:

La versión 4.0 del .NET Framework

El sistema gestor de bases de datos SQL Server 2008 Express

Con esto podemos decir que el propio VS 2010 nos ofrece todo lo necesario para poder desarrollar aplicaciones Web con ASP .NET 4.0. Por lo tanto nuestro sistema operativo puede ser Windows XP en sus versiones Home o Professional, ya que no será necesario utilizar el servidor Web Internet Information Server (incluido en Windows XP Professional) o Win-dows 7 en cualquiera de sus ediciones

Como entorno de trabajo para poder seguir el curso ya sería suficiente con la instalación de VS 2010 ya que incluye la plataforma .NET en su versión 4.0, un sistema gestor de bases de datos y un servidor Web para poder ejecutar nuestra aplicación Web. Ahora bien, la cosa cambia cuando se trata de un entorno de desarrollo real.

En un entorno de desarrollo real la máquina del desarrollador, además de tener instalado VS 2010, como sistema operati-vo podría tener Windows XP en sus ediciones Home o Professional, ya que se pueden realizar pruebas locales de la apli-cación Web mediante el servidor Web que se encuentra integrado dentro de VS 2010. Pero también sería necesario dispo-ner de un servidor Web de pruebas que ofreciera un entorno más real de ejecución para la aplicación Web basada en ASP .NET 4.0 que se está desarrollando.

En el servidor de pruebas deberemos tener instalado lo siguiente:

Sistema operativo Windows 2003-2008 Server

Servidor Web Internet Information Services (IIS) en su versión 6.0-7.0.

Microsoft .NET Framework 4.0

Sistema gestor de base de datos SQL Server 2000, 2005 ó 2008

El orden de la instalación en el caso del servidor Web IIS y la plataforma .NET Framework 4.0 es importante, el .NET Framework se debe instalar después de haber instalado el servidor Web. Ej

empl

o de

text

o

Page 32: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 32

Con estos requisitos tendremos un servidor de pruebas que representa un entorno de ejecución bastante común en el desa-rrollo de aplicaciones Web basadas en ASP .NET 4.0. Para casos concretos, cuando los requisitos en el servidor de pro-ducción sean distintos, deberemos implementar los requisitos correspondientes en nuestro servidor de pruebas.

Una forma muy común de desarrollar con Visual Studio 2010 aplicaciones Web basadas en ASP .NET, es la que vamos a describir a continuación.

Cada miembro del equipo de desarrollo tiene una copia local de la aplicación Web que se está construyendo, y en su equipo tendrán instalado Windows XP en cualquiera de sus versiones y VS 2010. De esta manera pueden ir desarrollando y ejecutando localmente la aplicación.

Las soluciones de VS 2010 que contienen cada una de las copias locales de la aplicación Web en los equipos de desarro-llo, deberán estar conectadas a un servidor de control de código fuente como puede ser Visual SourceSafe o Team Foun-dation Server, para de estar forma ir controlando los distintos cambios que cada miembro del equipo de desarrollo está realizando en su proyecto Web local, y así no se perderá el trabajo de ninguno de los miembros del equipo, ya que Visual SourceSafe se encarga de ir bloqueando los distintos recursos (páginas ASPX, clases, etc.) de los que consta la solución de Visual Studio, para que cada desarrollador los utilice de forma exclusiva y que en un momento dado pueda obtener la última versión de la aplicación Web para poder tener a su disposición el resto de cambios que han realizado sus compañe-ros de equipo de trabajo.

Aunque la aplicación Web se haya ido desarrollando y probando en los equipos de los desarrolladores, será necesaria probarla también en el servidor de pruebas, que será el que contendrá Internet Information Server 6.0 sobre Windows 2003 Server o IIS 7.0 sobre Windows 2008 Server, tal como indicábamos un poco más arriba en este mismo apartado.

Visual Studio 2010 ofrece un completo entorno de desarrollo integrado para la plataforma .NET 4.0 de Microsoft, por lo tanto además de desarrollar aplicaciones Web podremos desarrollar otro tipo de aplicaciones, como pueden ser las aplica-ciones Windows. El módulo que vamos a utilizar de Visual Studio 2010 es el que se denomina Microsoft Visual Web Developer 2010.

Ahora nos encontramos en disposición de crear nuestra primera aplicación Web con Visual Studio 2010.

Creación de una aplicación Web con VS 2010

Los pasos para crear desde VS 2010 una aplicación Web basada en ASP .NET son muy sencillos y los vamos a describir a continuación.

Para crear un sitio Web de ASP .NET tenemos dos opciones dentro de VS 2010, la más inmediata es desde la Página de Inicio de VS 2010, en la parte superior izquierda, en la sección proyectos recientes tenemos la opción Crear: Sitio Web…

Figura 10 Ej

empl

o de

text

o

Page 33: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 33

También se puede crear un sitio Web desde la opción de menú Archivo | Nuevo sitio Web, las dos posibilidades nos llevan a la pantalla que aparece a continuación.

Figura 11

Aquí tendremos que seleccionar la opción de sitio Web de ASP .NET, que es la que nos interesa en este caso que nos ocupa. Dos parámetros importantes a tener en cuenta dentro de esta pantalla es la selección de la ubicación del sitio Web y del lenguaje de programación que se va a utilizar por defecto en la aplicación Web.

En la lista de opciones correspondiente a la ubicación indicamos el lugar en el que se va a albergar la aplicación Web, VS 2010 nos ofrece cuatro posibilidades:

1. Sistema de archivos: es la que se encuentra seleccionada por defecto y es la que utilizaremos para realizar los ejemplos del texto, ya que se corresponde con el entorno de trabajo que hemos comentado. En este caso la aplica-ción Web va a residir en nuestro sistema de archivos local, la ruta por defecto en la que se van a situar la aplica-ción Web es C:\Documents and Settings\Usuario\ Mis documentos\Visual Studio 2010\ WebSites. Si seleccionamos esta opción se utilizará el servidor Web integrado dentro de VS 2010, es decir, se utilizará el servidor Web Cassini para ejecutar la aplicación Web, y el directorio anterior es el que utiliza por de-fecto como directorio de publicación del servidor Web, si lo comparamos con el servidor Web IIS sería como el conocido directorio c:\Inetput\wwwroot. Si pulsamos el botón Examinar podemos cambiar esta ruta para indicar el lugar de nuestro disco duro en el que deseamos que resida la aplicación Web que vamos a crear. Al pul-sar este botón parece una ventana en la que también se puede ver en su lado izquierdo el resto de posibilidades para ubicar el sitio Web.

Ejem

plo

de te

xto

Page 34: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 34

Figura 12

2. IIS local: esta segunda posibilidad es la que teníamos cuando desarrollábamos aplicaciones Web con Visual Stu-dio .NET 2003/2002, y consiste en que nuestro sitio Web se va a localizar en un directorio virtual dentro del ser-vidor Web Internet Information Server que tenemos instalado en nuestro equipo. En el caso de no tener instalado IIS o de utilizar el sistema operativo Windows XP Home Edition, esta posibilidad no se encontrará disponible. Si seleccionamos esta opción se utilizará el servidor Web IIS para ejecutar la aplicación en lugar del servidor inte-grado Cassini. Visual Studio 2010 configurará automáticamente el directorio virtual que va a contener nuestra aplicación, y se creará en el servidor Web IIS para que sea un directorio de inicio de aplicación, es decir, para que funcione como una aplicación Web dentro de IIS.

Figura 13

3. Sitio FTP: en este caso la aplicación Web no residirá en el sistema local, como ocurría en las opciones anteriores, sino que podrá encontrarse en un sistema remoto. La comunicación entre VS 2010 y el servidor remoto se realiza a través del protocolo FTP, en este caso tenemos que definir los parámetros necesarios para establecer a conexión al sitio FTP (Figura 14). Tenemos que indicar el nombre del servidor, el número de puerto (por defecto el 21), el directorio de destino, en el que se creará la aplicación Web en el sitio FTP, y el usuario y la clave si fuera necesa-rio, en caso contrario seleccionaríamos la casilla de Inicio de sesión anónimo.

Ejem

plo

de te

xto

Page 35: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 35

Figura 14

4. Sitio Web remoto: esta es la última de las opciones de selección de ubicación para nuestra aplicación Web, en este caso, al igual que en el anterior la aplicación ASP .NET se va a localizar en un servidor IIS remoto. VS 2010 accederá de forma remota el servidor Web que le indiquemos, tal como se ve en la siguiente figura, y configurará automáticamente el directorio virtual que se cree en el servidor Web para que sea un directorio de inicio de apli-cación, es decir, para que funcione como una aplicación Web dentro de IIS.

Figura 15

En nuestro caso, vamos a elegir la primera alternativa para crear nuestra aplicación Web, por lo tanto seleccionamos la ruta en nuestro disco y pulsamos el botón Aceptar, también hay que señalar que en mi caso he seleccionado el lenguaje VB .NET como lenguaje a utilizar por defecto dentro de la aplicación Web.

En ese momento VS 2010 creará la aplicación Web y nos presentará una pantalla muy similar a la de la figura, en realidad la figura representa un fragmento de la ventana completa que nos ofrece VS 2010.

Ejem

plo

de te

xto

Page 36: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 36

Figura 16

Lo importante de aquí es ver los archivos que ha creado de forma automática VS 2010 en el sitio Web, se ha creado una página ASPX de inicio, llamada Default.aspx, un fichero de configuración, web.config, y una carpeta especial de ASP .NET llamada App_Data, recordamos que esta carpeta va a contener los almacenes de datos utilizados por la apli-cación, podrán contener ficheros de SQL Server (.MDF), Access (.MDB), ficheros XML, etc.

Con esto ya tendríamos creada nuestra aplicación Web, lista para empezar a añadir páginas ASPX u otros elementos, que comprenden el desarrollo de la aplicación Web.

Modelo de separación de código

En este apartado vamos a seguir teniendo en mente la aplicación Web recientemente creada en el apartado anterior, ya que la página ASPX que se ha añadido de forma automática, nos va a servir para mostrar el modelo de separación de código que utiliza ASP .NET 4.0 para mantener la separación entre la lógica de negocio y la lógica de presentación.

Volvamos por lo tanto a nuestra aplicación Web que hemos creado con Visual Studio 2010 y centrémonos en la página Default.aspx.

Si nos fijamos en la página ASPX veremos que el código fuente incluido en la página ASPX es mínimo, únicamente con-tiene la definición de un formulario Web dentro de la página. Si en el explorador de soluciones de VS 2010, pulsamos sobre el símbolo más (+, indicador de que se puede desplegar) que aparece al lado del fichero Default.aspx vemos que se despliega y debajo aparece un nuevo fichero llamado Default.aspx.vb (ver en la Figura 17). Este es el fiche-ro de la clase asociado a la página ASPX, es la clase parcial en la que se va a implementar toda la lógica de negocio, de-jando la página ASPX para se encargue de la lógica de presentación.

Figura 17

A este mecanismo de separación de código, ya lo vimos en el primer capítulo de este texto, se le denomina Code-Behind. También comentamos que ya existía este mecanismo en ASP .NET 1.x, pero en ASP .NET 4.0 ha sido mejorado, ya que se ha introducido el concepto de clase parcial (Partial Class). Esta nueva característica permite una lectura de la clase más sencilla, ya que se genera menos código y es más sencillo de mantener, lo que se elimina en la clase parcial es la Ej

empl

o de

text

o

Page 37: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 37

definición y declaración de todos los controles de la página ASPX, ya que al definirse como parcial indicamos que la clase final, a la que se compila, se encuentra dividida en varios ficheros, en este caso se trata de dos, la página ASPX y su clase asociada.

Como podemos ver el código de la clase también es mínimo, únicamente tiene las sentencias de definición de la clase y utiliza la cláusula Inherits para indicar la clase de la que hereda.

Si hubiéramos seleccionado el lenguaje C# el código correspondiente de la clase sería como el que se muestra a continua-ción.

using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } }

Código fuente 3

Este es el modelo de programación de páginas ASPX que ofrece por defecto VS 2010, aunque al añadir una nueva página ASPX nos permite seleccionar, mediante un casilla, si queremos hacer uso del modelo de separación de código o no, si desmarcamos esta casilla se empleará para la página ASP .NET el modelo de código que encontramos en las antiguas versiones ASP hasta de la aparición de la tecnología .NET, lo que se denomina código en línea (inline coding). Literal-mente, tal como vemos en la imagen inferior en la casilla aparece el texto Colocar el código en un archivo independiente.

Figura 18

Si desmarcamos la casilla al añadir una nueva página ASPX se utilizará otro modelo de código, este modelo de código se denomina código en línea y en este caso no existe separación entre la lógica de presentación y la de negocio, todo el códi-go se encuentra en la página ASPX, y por lo tanto no se añadirá un fichero de clase asociado a la página ASPX, es decir, no existirá la clase parcial y únicamente se creará en el sitio Web de la aplicación un fichero ASPX.

Lo recomendable es utilizar siempre el modelo de separación de código basado en las clases parciales.

La forma que tiene ASP .NET 4.0 de indicar la asociación de la clase parcial con la página ASPX, es mediante dos pará-metros de la directiva Page, es decir, de la directiva de la página. Para indicar el fichero de la clase se utiliza el atributo Ej

empl

o de

text

o

Page 38: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 38

CodeFile y para indicar el nombre de la clase que se implementa el fichero utilizamos el atributo Inherits, con este atributo estamos indicando que la página ASPX hereda de la clase que se encuentra definida en la clase parcial asociada.

Por lo tanto en la página ASPX del ejemplo anterior aparecería el siguiente código (como siempre primero en VB .NET y luego en C#).

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %>

Código fuente 4

Creación de nuestra primera página ASP .NET 4.0

Para terminar este capítulo vamos a crear la típica página ASPX de “Hola Mundo”. Partimos de que ya tenemos nuestra aplicación Web creada, apara añadir una página ASPX pulsamos con el botón derecho del ratón sobre la solución y selec-cionamos la opción de menú Agregar nuevo elemento, con lo que aparece la ventana ya mostrada anteriormente. En esta ventana, de los múltiples elementos que podemos añadir a nuestra aplicación Web, seleccionamos el elemento Web Forms, indicamos el nombre de la página ASPX y el lenguaje a utilizar para la misma.

Como ya hemos comentado anteriormente debemos dejar la casilla marcada de Colocar el código en un archivo indepen-diente, para utilizar el modelo de separación de código, y también podemos marcar la casilla Seleccionar la página prin-cipal. Veamos que quiere decir esto, primero debemos aclarar que el término página principal es el que se ha utilizado para traducir el mecanismo de Master Pages, es decir, el mecanismo de páginas maestras.

Recordamos al lector que una página maestra la podíamos utilizar para que todas nuestras páginas tengan un aspecto simi-lar y coherente dentro de la aplicación Web, con esto conseguimos, además de mantener una coherencia y uniformidad en todo el aspecto del sitio Web, un mantenimiento sencillo en lo que al aspecto y presentación de sitio Web se refiere, ya que si necesitamos cambiar alguna característica del sitio Web no tenemos que ir página a página, solo lo cambiaremos en la página maestra. Además de darles este uso a las Master Pages, también pueden contener código, por lo tanto también se pueden añadir funcionalidades comunes a toda la aplicación Web.

Realizado este inciso, volvamos al momento en el que se iba a añadir una página ASPX a nuestra aplicación. Al marcar la casilla Seleccionar la página principal, se nos permite asignar a la nueva página ASPX que vamos a crear, una página maestra. De esta manera al darle al botón Agregar aparecerá una ventana como la de la figura en la que indicaremos la página maestra que se va a asignar a la página ASPX, y la seleccionaremos entre las existentes en nuestra aplicación Web. En el ejemplo que se muestra se va a utilizar la página maestra MasterPage.master. De momento no vamos a ade-lantar nada más sobre las Master Pages, en el capítulo correspondiente veremos esta novedad de ASP .NET 4.0 con todo lujo de detalles.

Ejem

plo

de te

xto

Page 39: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 39

Figura 19

Ya tenemos creada nuestra página ASPX, ahora en a vista de diseño de VS 2010 vamos a arrastrar desde el cuadro de herramientas dos controles Web estándar, un control Label y un control Button. La funcionalidad de muestra página va a ser muy sencilla, al pulsar el botón aparecerá el mensaje “Hola Mundo” en la etiqueta.

Una vez añadidos los dos controles, el código fuente de la página quedaría de la siguiente forma. Este sería la lógica de presentación (Código fuente 5).

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="HolaMundo.aspx.vb" Inherits="HolaMundo" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Página sin título</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Text="Label"> </asp:Label> <asp:Button ID="Button1" runat="server" Text="Button" /></div> </form> </body> </html>

Código fuente 5

Si hacemos doble clic sobre el botón en la vista de diseño, automáticamente VS 2010 nos llevará al código de la clase parcial Code-Behind para que demos el contenido al método Button1_Click, que va a ser el manejador del evento Click del botón del formulario Web. Dentro de este método vamos a incluir una única línea de código cuya función va a ser asignar a la propiedad Text del objeto Label el valor “Hola Mundo”. Esta sería la lógica de negocio, y el código fuente de la clase sería el siguiente.

Partial Class HolaMundo Inherits System.Web.UI.Page Protected Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click Label1.Text = "Hola Mundo" End Sub End Class

using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class HolaMundo2 : System.Web.UI.Page { protected void Button1_Click(object sender, EventArgs e) { Label1.Text = "Hola Mundo"; } }

Código fuente 6

Ahora ya podemos ejecutar la página ASPX dentro de nuestra aplicación, para ello pulsaremos el botón con el icono de la barra de menú de VS 2010, este botón indica el inicio de depuración de nuestra aplicación Web. La primera vez que ejecutemos nuestra aplicación Web de esta manera aparecerá una ventana como la de la figura, que nos indica que es ne-cesario habilitar el modo de depuración en el fichero de configuración (web.config) de nuestra aplicación Web. En Ej

empl

o de

text

o

Page 40: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 40

nuestro caso permitiremos que se modifique de forma automática el fichero web.config para habilitar la depuración, ya que la tarea de depuración es indispensable cuando estamos hablando del desarrollo de cualquier tipo de aplicación.

Figura 20

Veremos que al iniciar la ejecución de la aplicación, VS 2010 arranca el servidor Web integrado Cassini, que aparecerá en la barra de tareas de Windows, y la primera vez aparecerá con un mensaje indicando que se ha iniciado, como se puede ver en la figura.

Figura 21

Ya en este momento tenemos en ejecución nuestra aplicación Web y veremos en el navegador nuestra primera página ASP .NET 4.0. Si pulsamos el botón de nuestra página obtendremos algo parecido a la siguiente figura.

Figura 22

Como se ha podido comprobar cuando iniciamos la ejecución de nuestra aplicación Web, automáticamente VS 2010 ha arrancado el sitio Web y ha cargado la página HolaMundo.aspx sin que nosotros le indiquemos nada, esto es así por-que si no indicamos una página de inicio para la solución VS 2010 ejecutará la página en la que nos encontremos. Para indicar una página de inicio determinada, en el explorador de soluciones pulsaremos con el botón derecho del ratón sobre la página ASPX que queremos que sea nuestra página de inicio, y seleccionamos la opción de menú Establecer como página de inicio. Ej

empl

o de

text

o

Page 41: Desarrollo de Aplicaciones Web Con ASP .NET 4 (Ejemplo)

Página | 41

Con esta última observación se da por concluido este capítulo en el que nos hemos familiarizado con el entorno de desa-rrollo que nos ofrece VS 2010 creando una página ASPX desde cero. En el siguiente capítulo se comentarán una serie de generalidades sobre el desarrollo de aplicaciones ASP .NET 4.0, como por ejemplo, los Web Forms y el tratamiento de eventos, que nos servirá de base para los siguientes capítulos en los que se empezarán a ver los controles HTML y contro-les Web de servidor de ASP .NET 4.0.

Caso práctico

Todavía no hemos visto demasiadas funcionalidades de las páginas ASPX, por lo tanto este caso práctico va a resultar muy sencillo.

Planteamiento Se pide crear una nueva aplicación Web con VS 2010, y añadir una página ASPX con el modelo de separación código y que utilice el lenguaje VB .NET. Esta página debe mostrar un mensaje al pulsar un botón.

Una vez creada la página se debe ejecutar y comprobar su funcionamiento.

Ejem

plo

de te

xto