Desarrollo de software Este texto está pensado tanto para aquellos que desean pasar de la tecnología ASP al nuevo entorno de desarrollo de aplicaciones Web que propone Microsoft, es decir, ASP .NET, como para todos aquellos que desconocen la tecnología ASP (Active Server Pages) y desean introducirse en el mundo del desarrollo de aplicaciones de negocio en Internet dentro del nuevo entorno del .NET Framework de Microsoft. Se abordan diversos temas relacionados con la tecnología ASP .NET como pueden ser los controles Web, el lenguaje C#, Visual Studio .NET, Internet Information Server 5, desarrollo de controles ASP .NET y componentes .NET, ADO .NET, construcción y utilización de servicios Web, etc. Se requiere conocer los fundamentos de Internet/Intranet, estar familiarizado con la navegación por la web, DDEESSAARRRROOLLLLOO DDEE AAPPLLIICCAACCIIOONNEESS PPAARRAA conocer HTML y conocer el sistema operativo Windows a nivel de IINNTTEERRNNEETT CCOONN AASSPP ..NNEETT usuario, así como algunos conocimientos de programación orientada a AANNGGEELL EESSTTEEBBAANN objetos. ADVERTENCIA LEGAL Todos los derechos de esta obra están reservados a Grupo EIDOS Consultoría y Documentación Informática, S.L. El editor prohíbe cualquier tipo de fijación, reproducción, transformación, distribución, ya sea mediante venta y/o alquiler y/o préstamo y/o cualquier otra forma de cesión de uso, y/o comunicación pública de la misma, total o parcialmente, por cualquier sistema o en cualquier soporte, ya sea por fotocopia, medio mecánico o electrónico, incluido el tratamiento informático de la misma, en cualquier lugar del universo. El almacenamiento o archivo de esta obra en un ordenador diferente al inicial está expresamente prohibido, así como cualquier otra forma de descarga (downloading), transmisión o puesta a disposición (aún en sistema streaming). La vulneración de cualesquiera de estos derechos podrá ser considerada como una actividad penal tipificada en los artículos 270 y siguientes del Código Penal. La protección de esta obra se extiende al universo, de acuerdo con las leyes y convenios internacionales. Esta obra está destinada exclusivamente para el uso particular del usuario, quedando expresamente prohibido su uso profesional en empresas, centros docentes o cualquier otro, incluyendo a sus empleados de cualquier tipo, colaboradores y/o alumnos. Si Vd. desea autorización para el uso profesional, puede obtenerla enviando un e-mail [email protected] o al fax (34)-91-5017824. Si piensa o tiene alguna duda sobre la legalidad de la autorización de la obra, o que la misma ha llegado hasta Vd. vulnerando lo anterior, le agradeceremos que nos lo comunique al e-mail [email protected] o al fax (34)-91-5017824. Esta comunicación será absolutamente confidencial. Colabore contra el fraude. Si usted piensa que esta obra le ha sido de utilidad, pero no se han abonado los derechos correspondientes, no podremos hacer más obras como ésta. © Angel Esteban Núñez, 2002 © Grupo EIDOS Consultaría y Documentación Informática, S.L., 2002 ISBN 84-88457-52-9 ASP .NET Angel Esteban Núñez Responsable editorial Coordinación de la edición Paco Marín ([email protected]) Antonio Quirós ([email protected]) Autoedición Magdalena Marín ([email protected]) Angel Esteban ([email protected]) Grupo EIDOS C/ Téllez 30 Oficina 2 28007-Madrid (España) Tel: 91 5013234 Fax: 91 (34) 5017824 www.grupoeidos.com/www.eidos.es www.LaLibreriaDigital.com Índice ÍNDICE..................................................................................................................................................5 INTRODUCCIÓN AL .NET FRAMEWORK.................................................................................13 INTRODUCCIÓN..................................................................................................................................13 ALGO ESTÁ CAMBIANDO...................................................................................................................13 ¿QUÉ ES .NET?..................................................................................................................................14 .NET FRAMEWORK...........................................................................................................................16 EL CLR, COMMON LANGUAGE RUNTIME.........................................................................................17 EL CTS, COMMON TYPE SYSTEM.....................................................................................................18 METADATA (METADATOS)................................................................................................................18 SOPORTE MULTI-LENGUAJE...............................................................................................................18 EL CLS (COMMON LANGUAGE SPECIFICATION)..............................................................................19 EJECUCIÓN ADMINISTRADA...............................................................................................................20 Código administrado.....................................................................................................................20 LA EJECUCIÓN DE CÓDIGO DENTRO DEL CLR...................................................................................20 El IL, Intermediate Language.......................................................................................................20 Compilación instantánea del IL y ejecución.................................................................................21 Compilación bajo demanda...........................................................................................................22 Independencia de plataforma........................................................................................................23 DOMINIOS DE APLICACIÓN................................................................................................................23 SERVIDORES DE ENTORNO.................................................................................................................24 NAMESPACES.....................................................................................................................................25 LA JERARQUÍA DE CLASES DE .NET FRAMEWORK............................................................................26 ENSAMBLADOS..................................................................................................................................27 INTRODUCCIÓN A ASP .NET........................................................................................................29 INTRODUCCIÓN..................................................................................................................................29 RECORRIDO POR LAS DISTINTAS VERSIONES DE ASP........................................................................31 MATERIAL NECESARIO......................................................................................................................33 COMPARATIVA DE ASP .NET CON ASP 3.0.....................................................................................33 Código compilado.........................................................................................................................34 Bloques de código.........................................................................................................................34 Directivas......................................................................................................................................35 Acceso a datos...............................................................................................................................35 Lenguajes......................................................................................................................................36 Orientación a objetos....................................................................................................................36 Otros cambios................................................................................................................................36 SINTAXIS DE ASP .NET.....................................................................................................................37 WEB FORMS.......................................................................................................................................40 CONTROLES ASP .NET.....................................................................................................................42 Controles intrínsecos.....................................................................................................................43 Controles HTML.......................................................................................................................43 Controles Web...........................................................................................................................44 Controles de lista...........................................................................................................................46 Controles ricos..............................................................................................................................46 Controles de validación.................................................................................................................47 ADO .NET........................................................................................................................................48 DATA BINDING..................................................................................................................................49 EVENTOS DE LA PÁGINA....................................................................................................................50 SEPARACIÓN DE CÓDIGO...................................................................................................................51 LOS SERVICIOS DE CACHÉ..................................................................................................................52 HOLA MUNDO CON ASP .NET..........................................................................................................53 INTRODUCCIÓN A LA POO...........................................................................................................55 INTRODUCCIÓN..................................................................................................................................55 ¿QUÉ ES LA POO?.............................................................................................................................55 OBJETOS............................................................................................................................................56 MENSAJES..........................................................................................................................................58 CLASES..............................................................................................................................................58 HERENCIA..........................................................................................................................................59 MÉTODOS..........................................................................................................................................60 POLIMORFISMO..................................................................................................................................60 SOBRECARGA....................................................................................................................................60 LA LEY DE DEMETER.........................................................................................................................60 MODELO DE OBJETOS........................................................................................................................61 RELACIONES ENTRE CLASES..............................................................................................................61 VENTAJAS E INCONVENIENTES DE LA POO.......................................................................................62 UN EJEMPLO SENCILLO......................................................................................................................63 EL LENGUAJE C#.............................................................................................................................67 INTRODUCCIÓN..................................................................................................................................67 HISTORIA RECIENTE DEL LENGUAJE C#............................................................................................68 EL LENGUAJE C# Y EL ENTORNO COMÚN DE EJECUCIÓN (CLR)......................................................68 PRINCIPIOS BÁSICOS DE C#...............................................................................................................69 Características generales..............................................................................................................69 ESPACIOS CON NOMBRE (NAMESPACES)...........................................................................................70 SINTAXIS Y ELEMENTOS BÁSICOS DEL LENGUAJE C#........................................................................71 Case-sensitive................................................................................................................................71 Declaración de variables..............................................................................................................71 Delimitador de sentencias.............................................................................................................72 Comentarios..................................................................................................................................72 Bloques..........................................................................................................................................72 Ámbitos..........................................................................................................................................73 Operadores....................................................................................................................................73 Acceso a propiedades indexadas...................................................................................................74 Declaración de propiedades simples.............................................................................................75 Arrays............................................................................................................................................76 Inicialización.................................................................................................................................76 Sentencias condicionales...............................................................................................................76 Bucles............................................................................................................................................77 Manejadores de eventos................................................................................................................79 Conversión de tipos.......................................................................................................................80 Definición de clases.......................................................................................................................81 Tratamiento de errores..................................................................................................................82 Campos..........................................................................................................................................83 Métodos.........................................................................................................................................88 Métodos constructores...............................................................................................................88 Métodos estándar..........................................................................................................................92 Modificadores de argumento.....................................................................................................92 Modificadores de métodos........................................................................................................94 INSTALACIÓN DE VISUAL STUDIO .NET................................................................................101 PREPARACIÓN DEL ENTORNO DE TRABAJO......................................................................................101 .NET Framework SDK................................................................................................................101 Visual Studio .NET......................................................................................................................101 REQUISITOS HARDWARE..................................................................................................................102 SISTEMA OPERATIVO.......................................................................................................................102 RECOMENDACIONES PREVIAS..........................................................................................................102 INSTALACIÓN DE VISUAL STUDIO .NET.........................................................................................103 PRIMEROS PASOS CON ASP .NET.............................................................................................111 OBJETIVO DE ESTE TEMA.................................................................................................................111 MATERIALES NECESARIOS...............................................................................................................111 EL SERVIDOR WEB...........................................................................................................................112 INSTALACIÓN DE ASP .NET............................................................................................................114 VISUAL STUDIO .NET......................................................................................................................117 WEB FORMS: INTRODUCCIÓN Y CONTROLES HTML.......................................................121 INTRODUCCIÓN A LOS WEB FORMS.................................................................................................121 INTRODUCCIÓN A LOS CONTROLES ASP .NET................................................................................123 HOLA MUNDO CON WEB FORMS.....................................................................................................124 CONTROLES HTML.........................................................................................................................126 HtmlAnchor.................................................................................................................................128 HmlButton...................................................................................................................................130 HtmlForm....................................................................................................................................130 HtmlGenericControl....................................................................................................................130 HtmlImage...................................................................................................................................132 HtmlInputButton..........................................................................................................................133 HtmlInputCheckBox....................................................................................................................133 HtmlInputFile..............................................................................................................................133 HtmlInputHidden.........................................................................................................................133 HtmlInputImage...........................................................................................................................134 HtmlInputRadioButton................................................................................................................135 HtmlInputText..............................................................................................................................135 HtmlSelect...................................................................................................................................135 HtmlTable....................................................................................................................................135 HtmlTableRow.............................................................................................................................136 HtmlTableCell.............................................................................................................................137 CORRESPONDENCIA ENTRE CONTROLES HTML Y ETIQUETAS HTML...........................................137 WEB FORMS: CONTROLES WEB INTRÍNSECOS..................................................................139 INTRODUCCIÓN A LOS CONTROLES WEB........................................................................................139 CONTROLES WEB INTRÍNSECOS......................................................................................................142 Button..........................................................................................................................................142 CheckBox.....................................................................................................................................144 CheckBoxList...............................................................................................................................145 DropDownList.............................................................................................................................147 HyperLink....................................................................................................................................148 Image...........................................................................................................................................149 ImageButton................................................................................................................................149 Label............................................................................................................................................150 LinkButton...................................................................................................................................150 ListBox.........................................................................................................................................152 Panel............................................................................................................................................154 PlaceHolder.................................................................................................................................156 RadioButton.................................................................................................................................156 RadioButtonList...........................................................................................................................158 Table, TableRow y TableCell......................................................................................................159 TextBox........................................................................................................................................162 APLICANDO ESTILOS A LOS CONTROLES WEB.................................................................................163 CORRESPONDENCIA ENTRE CONTROLES WEB INTRÍNSECOS Y ETIQUETAS HTML.........................167 WEB FORMS: CONTROLES RICOS Y DE VALIDACIÓN......................................................169 CONTROLES RICOS...........................................................................................................................169 AdRotator....................................................................................................................................169 Calendar......................................................................................................................................172 CONTROLES DE VALIDACIÓN...........................................................................................................179 RequiredFieldValidator...............................................................................................................181 CompareValidator.......................................................................................................................184 RangeValidator...........................................................................................................................187 RegularExpressionValidator.......................................................................................................188 ValidationSummary.....................................................................................................................189 CustomValidator.........................................................................................................................191 WEB FORMS: PLANTILLAS Y DATA BINDING......................................................................195 INTRODUCCIÓN................................................................................................................................195 INTRODUCCIÓN A LOS CONTROLES DE LISTA..................................................................................196 PLANTILLAS (TEMPLATES)..............................................................................................................196 DATA BINDING................................................................................................................................202 Estableciendo como origen de datos propiedades......................................................................207 Estableciendo como origen de datos colecciones y listas...........................................................210 Estableciendo como origen de datos expresiones y métodos......................................................215 El método DataBinder.Eval()......................................................................................................216 WEB FORMS: CONTROLES DE LISTA.....................................................................................221 INTRODUCCIÓN................................................................................................................................221 EL CONTROL REPEATER..................................................................................................................222 EL CONTROL DATALIST..................................................................................................................223 EL CONTROL DATAGRID.................................................................................................................235 Definición de columnas dentro de un control DataGrid.............................................................237 Otras operaciones con columnas................................................................................................246 Paginación de un control DataGrid............................................................................................250 LA CLASE PAGE.............................................................................................................................255 INTRODUCCIÓN................................................................................................................................255 EVENTOS DE LA PÁGINA..................................................................................................................256 PROPIEDADES DE LA CLASE PAGE...................................................................................................258 MÉTODOS DE LA CLASE PAGE.........................................................................................................260 DIRECTIVAS DE LA PÁGINA.............................................................................................................261 La directiva @Page.....................................................................................................................261 La directiva @Import..................................................................................................................264 La directiva @Implements..........................................................................................................266 La directiva @Register................................................................................................................266 La directiva @Assembly..............................................................................................................267 La directiva @OutputCache........................................................................................................269 La directiva @Reference.............................................................................................................270 CODE-BEHIND Y CONTROLES DE USUARIO........................................................................271 INTRODUCCIÓN................................................................................................................................271 CODE-BEHIND.................................................................................................................................272 Utilizando los controles Web de la página..................................................................................274 Tratamiento de eventos...............................................................................................................275 Clases Code-Behind y Visual Studio .NET..................................................................................277 CONTROLES DE USUARIO.................................................................................................................279 Creando propiedades en los controles de usuario......................................................................283 Eventos en los controles de usuario............................................................................................286 La directiva @Control................................................................................................................287 Controles de usuario y clases Code-Behind................................................................................288 Transformación de una página ASP .NET en control de usuario...............................................291 CREACIÓN DE COMPONENTES Y CONTROLES DE SERVIDOR......................................295 INTRODUCCIÓN................................................................................................................................295 INTRODUCCIÓN A LOS COMPONENTES .NET...................................................................................295 CREACIÓN DE COMPONENTES .NET................................................................................................298 CREACIÓN DE CONTROLES ASP .NET DE SERVIDOR......................................................................305 Propiedades de los controles de servidor...................................................................................307 Conversión de los valores de atributos.......................................................................................309 Utilizando los servicios de HtmlTextWriter................................................................................312 Propiedades de clase...................................................................................................................314 Heredando de la clase System.Web.IU.WebControl...................................................................318 Controles compuestos..................................................................................................................320 Tratando los datos enviados........................................................................................................324 Manteniendo el estado de los controles......................................................................................326 Lanzando eventos........................................................................................................................328 TRATAMIENTO DE ERRORES...................................................................................................333 INTRODUCCIÓN................................................................................................................................333 TRATAMIENTO DE ERRORES ESTRUCTURADO.................................................................................334 LA CLASE EXCEPTION......................................................................................................................334 TRY/CATCH (TRATANDO LAS EXCEPCIONES).................................................................................335 LANZANDO EXCEPCIONES...............................................................................................................338 EXCEPCIONES PERSONALIZADAS.....................................................................................................341 TRATAMIENTO DE ERRORES EN ASP .NET.....................................................................................345 EL MÉTODO PAGE_ERROR...............................................................................................................346 EL MÉTODO APPLICATION_ERROR..................................................................................................347 EL ATRIBUTO ERRORPAGE DE LA DIRECTIVA @PAGE....................................................................349 DEFINIENDO PÁGINAS DE ERROR EN EL FICHERO WEB.CONFIG......................................................350 TRAZAS Y DEPURACIÓN EN ASP .NET....................................................................................355 INTRODUCCIÓN................................................................................................................................355 EL MECANISMO DE TRAZAS.............................................................................................................355 TRAZAS A NIVEL DE PÁGINA............................................................................................................355 ESCRIBIENDO EN LAS TRAZAS.........................................................................................................357 TRAZAS DESDE COMPONENTES .NET..............................................................................................361 TRAZAS A NIVEL DE APLICACIÓN....................................................................................................363 DEPURACIÓN EN ASP .NET............................................................................................................365 DEPURANDO CON EL SDK DEBUGGER............................................................................................366 DEPURANDO CON VISUAL STUDIO .NET........................................................................................370 INTERNET INFORMATION SERVER 5.0..................................................................................373 INTRODUCCIÓN................................................................................................................................373 EL SERVIDOR WEB INTERNET INFORMATION SERVER 5.0...............................................................374 INSTALANDO IIS 5.0........................................................................................................................374 NOVEDADES DE IIS 5.0....................................................................................................................376 EL ADMINISTRADOR DE SERVICIOS DE INTERNET...........................................................................377 ELEMENTOS DE IIS 5.0....................................................................................................................381 ADMINISTRACIÓN DEL SITIO WEB...................................................................................................382 Sitio Web.....................................................................................................................................382 Directorio particular...................................................................................................................384 Documentos.................................................................................................................................385 Operadores..................................................................................................................................386 Errores personalizados...............................................................................................................386 Rendimiento.................................................................................................................................387 Seguridad de directorios.............................................................................................................388 Filtros ISAPI................................................................................................................................389 Encabezados HTTP.....................................................................................................................390 Extensiones de servidor...............................................................................................................391 LA APLICACIÓN WEB.......................................................................................................................392 APLICACIONES ASP .NET............................................................................................................397 INTRODUCCIÓN................................................................................................................................397 ELEMENTOS BÁSICOS DE UNA APLICACIÓN ASP .NET...................................................................398 EL DIRECTORIO BIN DE LA APLICACIÓN.........................................................................................398 EL FICHERO GLOBAL.ASAX.........................................................................................................399 Directivas....................................................................................................................................401 Declaración de código................................................................................................................401 Inclusiones del lado del servidor.................................................................................................402 Etiquetas de declaración de objetos............................................................................................403 EVENTOS DE LA APLICACIÓN...........................................................................................................404 Eventos por petición....................................................................................................................405 Eventos condicionales.................................................................................................................409 LA CLASE HTTPAPPLICATION..........................................................................................................412 GESTIÓN DEL ESTADO DE LA APLICACIÓN ASP .NET.....................................................................413 EL OBJETO SESSION.........................................................................................................................414 EL OBJETO APPLICATION.................................................................................................................421 EL OBJETO CACHE...........................................................................................................................422 VARIABLES ESTÁTICAS....................................................................................................................426 UTILIZANDO NUESTRA PROPIA CLASE PARA EL FICHERO GLOBAL.ASAX...................................427 CONFIGURACIÓN DE APLICACIONES ASP .NET................................................................431