manual de asp net

Upload: pablo-a-guevara-polania

Post on 06-Jul-2015

114 views

Category:

Documents


0 download

TRANSCRIPT

Tema 1. INTRODUCCIN AL DESARROLLO DE APLICACIONES WEB _______ 1 Tema 2. REQUISITOS DEL ASP.NET (.NET FRAMEWORK) _______________ 11 Tema 3. CONCEPTOS DE LA PROGRAMACIN ORIENTADA A OBJETOS ___ 19 Tema 4. CREANDO UNA PGINA BSICA ____________________________ 31 Tema 5. CONCEPTOS DE WEB FORMS ______________________________ 55 Tema 6. COMPONENTES (DATALIST, DATAGRID) ______________________ 83 Tema 7. DIRECTIVAS DE PGINA ___________________________________ 91 Tema 8. CONFIGURACIN DE IIS ___________________________________ 99 Tema 9. EL ARCHIVO GLOBAL.ASAX_______________________________ 111 Tema 10. EL ARCHIVO WEB.CONFIG ______________________________ 119 Tema 11. MDULOS Y MANEJADORES http_________________________ 129 Tema 12. SEGURIDAD EN ASP.NET ________________________________ 135 GLOSARIO_______________________________________________________ 143

Tema 1

INTRODUCCIN AL DESARROLLO DE APLICACIONES WEB

1.1. ASP 3_________________________________________________ 5 1.2. JAVA (JSP, SERVLETS) __________________________________ 6 1.3. PHP __________________________________________________ 7 1.4. DHTML________________________________________________ 9

-1-

El desarrollo de aplicaciones para el entorno Internet ha cambiado mucho desde su aparicin hace algunos aos. El mundo de la informtica avanza rpidamente, y las necesidades bsicas de un sitio Web han cambiado. Al principio, el desarrollo de pginas Web se limitaba prcticamente al uso del lenguaje de marcado HTML (lenguaje de marcado de hipertexto), un HTML sencillo basado en la especificacin 3.2, sin capas ni estilos, con lo que se obtenan pginas estticas cuya labor nicamente era suministrar informacin personal del autor o de la empresa (de forma textual o a travs de imgenes), pero, sin proporcionar ninguna interaccin con el usuario. Actualmente, un sitio Web suele soportar la recogida de datos a travs de formularios, inclusiones de archivos (subir ficheros al servidor, como imgenes o documentos), envo de correos electrnicos, acceso a bases de datos, redireccionamiento de acuerdo al perfil del usuario, etc. En definitiva, hoy da, las aplicaciones Web se disean con el propsito de suministrar al usuario una serie de servicios ms complejos. Como ejemplo podemos citar una plataforma de teleformacin que soporte matriculacin de alumnos, subida de cursos, exmenes, almacenamiento de notas, estadsticas de tiempos sobre conexiones al centro virtual, visitas por curso y alumno, etc. Cada vez que el alumno entra en la plataforma y se loga (introduce su nombre de usuario y contrasea), se le presenta una pgina personalizada (con acceso a cada uno de los cursos en que est matriculado), y cada vez que el alumno realiza un ejercicio o examen, el sistema puede comprobar los resultados introducidos y otorgarle una nota, que almacena para l en una base de datos, y del que va formando un expediente. Estos son ejemplos de pginas dinmicas, cuyo aspecto final va a depender de las acciones del usuario, de la forma de interactuar que tenga con la aplicacin (en cuntos cursos se ha matriculado, si ha aprobado o suspendido un examen, los temas o respuestas que ha dado en los foros de su curso, etc.). Entre las aplicaciones tpicas desarrolladas en la actualidad, se encuentran los portales, las tiendas o comercios virtuales, B2C (Business-To-Consumer, proveedor y cliente), aplicaciones publicitarias, de venta (de billetes de avin, subastas), de ocio (portales de juegos) ... Estos desarrollos se caracterizan por el alto nmero de usuarios que tienen que soportar y por la calidad de la interfaz de usuario, el diseo y el sistema de navegacin presentados.

-3-

Ejemplo de aplicacin Web actual: Plataforma de Teleformacin

Los desarrollos Internet se implementan sobre los protocolos y lenguajes de Internet. A su vez, estos protocolos son estndares que implementan una serie de mecanismos bsicos para permitir el paso de informacin entre los equipos clientes de los usuarios (que contienen los navegadores de Internet) y los equipos servidores (que contienen la aplicacin), y son principalmente, TCP/IP (Protocolo de Control de Transmisin / Protocolo de Internet y HTTP (Protocolo de Transmisin de Hipertexto). A mayor complejidad de aplicaciones, mayor complejidad y potencia de herramientas y nuevas tecnologas usadas en su programacin. A continuacin, vamos a ver una serie de tecnologas de desarrollo Web utilizadas en la actualidad:

-4-

1.1. ASP 3 Es la versin previa a la tecnologa ASP.NET, y por tanto, tambin la solucin inicial de Microsoft a la programacin Web. Sus siglas se correponden con Active Server Pages en su versin 3 (Pginas Activas de Servidor), y funcionaban bajo las versiones del servidor Web de Microsoft, IIS (Internet Information Server, Servidor de Informacin de Internet) en sus versiones 3, 4 y 5. Este sistema se basaba en la ejecucin de una serie de lenguajes de script (principalmente, VBScript y Jscript) embebidos en pginas HTML. La extensin de estas pginas es .asp (son las comnmente llamadas pginas ASP, y que an hoy siguen utilizndose en la programacin de multitud de sitios Web). Su proceso de desarrollo es relativamente rpido, est integrado con el modelo COM (Modelo de Objetos Componentes) de Windows y se encuentra muy extendido (ha sido uno de los ms utilizados en los ltimos tiempos). Sin embargo, su modelo de desarrollo es ms bien funcional, y no totalmente orientado a objetos.

En esta direccin puede encontrarse abundante documentacin sobre ASP

-5-

A partir de la versin 5 de su servidor Web, IIS, Microsoft da soporte a su nueva solucin de programacin Web, ASP.NET, (aunque existe compatibilidad con el cdigo ASP anterior). ASP.NET mejora en los lenguajes y herramientas de desarrollo, asume el modelo de programacin orientada a objetos, mejora el rendimiento general del sistema, etc. (a lo largo del manual veremos las tcnicas ms comunes utilizadas con esta tecnologa).

Uno de los sitios Web ms populares dedicados a ASP.NET

1.2. JAVA (JSP, SERVLETS) Es la solucin de SUN Microsystems para el desarrollo de aplicaciones Web. Consta de un conjunto de libreras y API (Interfaz de Programacin de Aplicaciones) de desarrollo, que incluye un conjunto de objetos de servidor o Servlets, y un sistema de programacin de pginas con un modelo similar al de ASP (introduciendo cdigo java embebido en pginas HTML), pginas JSP (Java Server Pages, Pginas de Servidor Java).

-6-

Este modelo de Servlets y pginas JSP, al estar directamente basado en Java, presenta todas las ventajas de este lenguaje, como la orientacin a objetos, disponibilidad de todas las libreras adicionales de Java (generacin de imgenes, comunicaciones, seguridad, encriptacin, etc). Podramos decir que esta solucin es ms potente y completa para desarrollar aplicaciones Web que la solucin de pginas ASP.

Sitio Web de SUN Microsystems dedicado a Java Java contina siendo la gran alternativa al desarrollo de aplicaciones Web con tecnologa Microsoft (ASP, ASP.NET). 1.3. PHP PHP corresponde a las iniciales de Personal Home Page, Procesador de Hipertexto. Este lenguaje de programacin tiene una sintaxis similar a los lenguajes C y Perl, se interpreta por un servidor Web Apache bajo sistemas Unix/Linux (tambin han salido al mercado versiones para sistemas Windows, aunque no siempre podremos utilizar todas sus caractersticas bajo este sistema operativo).-7-

Presenta una tcnica similar a las pginas ASP de Microsoft, es decir, las pginas HTML incluyen el cdigo PHP embebido en ellas, y al ejecutarlas, se genera cdigo HTML dinmicamente. Por otro lado, es preciso mencionar que soporta clases, pero no est orientado a objetos, aunque dispone de una gran nmero de libreras de funciones para realizar operaciones avanzadas como acceso a bases de datos, correo electrnico, transferencia de ficheros, comunicaciones, etc. Las pginas PHP tambin se han extendido mucho en los ltimos aos (son las pginas Web que vemos con extensin .php o .phtml), aunque parece ser que se tiende a utilizar las soluciones de Java y ASP.NET en las nuevas aplicaciones.

En esta direccin podemos encontrar toda documentacin necesaria sobre PHP, como manuales, la referencia del lenguaje, entornos, etc. y adems en varios idiomas.

-8-

1.4. DHTML Sus siglas significan Dinamic HTML (HTML dinmico). Se forma de una conjuncin de HTML, hojas de estilo en cascada (CSS) y lenguajes de script como JavaScript o VBScript. Estos lenguajes de script se ejecutan en la mquina cliente (en el navegador del usuario que solicita una pgina). De hecho, sta es una gran diferencia con el resto de las anteriores tecnologas que hemos visto en los apartados anteriores. Normalmente, un desarrollador Web, utilizar alguna de las tecnologas anteriores, basadas en servidor, que implementa la lgica principal y fundamental de la aplicacin, en conjuncin con el HTML dinmico, ya que gracias a ste, podemos conseguir efectos muy vistosos en nuestras pginas, como formateo ms completo al HTML, alternancia de imgenes, capas (contenido de la pgina cuya posicin y tamao puede cambiar), con lo que obtenemos desplazamiento de imgenes, banners, cambios de visibilidad en los elementos de la pgina (partes de la pgina que aparecen o desaparecen en funcin de los eventos o acciones del usuario), validaciones de entradas del usuario antes de enviar los datos al servidor, etc.

En esta direccin podemos encontrar una referencia muy completa del lenguaje JavaScript

-9-

RECUERDE

-

El desarrollo de aplicaciones Web ha evolucionado rpidamente en los ltimos aos. Las pginas estticas que usaban nicamente el lenguaje HTML 3.2, han pasado a sitios Web interactivos que ofrecen multitud de servicios a los usuarios.

-

Actualmente se utilizan tecnologas como DHTML (HTML, CSS y lenguajes de script, como VBScript o JavaScript, que se ejecutan en el cliente), y ASP 3, PHP, JSP y Servlets, y ASP.NET (tecnologas que se ejecutan en el servidor).

- 10 -

Tema 2

(.NET FRAMEWORK)

REQUISITOS DEL ASP.NET

2.1. MICROSOFT .NET FRAMEWORK _________________________ 14 2.2. CLS ________________________________________________ 16 2.3. CTS ________________________________________________ 16 2.4. IL (MSIL) ____________________________________________ 17

- 11 -

En este captulo vamos a comentar los programas necesarios para poder desarrollar aplicaciones ASP.NET: Sistema operativo Windows 2000 Server/Professional. (ASP.NET no es soportado por Windows NT ni por Windows 9x). El Servidor Web Internet Information Server 5.0 (IIS 5.0). (Viene incluido como parte del sistema operativo Windows 2000, debemos dejarlo incluido como parte de la instalacin del sistema operativo). Microsoft .NET Framework SDK (Software Development Kit): es la implementacin de la plataforma .NET sobre la que se ejecutarn las pginas ASP.NET. Es decir, el .NET Framework SDK contiene todas las clases que componen la plataforma .NET. Para poder instalarlo necesitamos tener instalado, al menos, el navegador Internet Explorer 6.0 y el Service Pack 2 de Windows 2000. Su distribucin es gratuita y podemos descargrnoslo del sitio Web de desarrolladores de Microsoft en http://msdn.microsoft.com. Adems, en esta direccin podemos encontrar abundante documentacin sobre el tema. Tambin es recomendable, aunque no obligatorio, disponer de la aplicacin Visual Studio .NET, que es un entorno de desarrollo para la plataforma .NET. Este entorno integrado ofrece una serie de ayudas visuales y utilidades muy interesantes, adems de valiosa documentacin que nos ayudarn en el desarrollo, prueba y depuracin de nuestras aplicaciones ASP.NET. Adems, las distribuciones de la aplicacin de Visual Studio .NET, suelen incluir el paquete Microsoft .NET Framework SDK, como parte opcional de la instalacin, por si el equipo donde va a ser instalado el Visual Studio .NET, no lo tiene todava. Tambin podemos conseguir una versin de evaluacin de Visual Studio .NET en el sitio Web de MSDN (http://msdn.microsoft.com/vstudio/productinfo/trial.asp). Este entorno es muy recomendable, pero no imprescindible para escribir nuestras aplicaciones ASP.NET. De hecho, tambin puede usarse cualquier otro editor de texto comn, como el bloc de notas de Windows, o la aplicacin EditPlus, aunque stos no proporcionan las utilidades del entorno Visual Studio. NET.

- 13 -

En el sitio Web de Microsoft podemos descargarnos gratuitamente el paquete .NET Framework

2.1. MICROSOFT .NET FRAMEWORK ASP.NET se engloba dentro de la tecnologa denominada Microsoft .NET, que, aparte de la tecnologa Web, nos ofrece toda una gama de tecnologas para el desarrollo y explotacin de aplicaciones. Es decir, ASP.NET es un subconjunto de la tecnologa .NET de Microsoft, la parte relativa a la programacin Web. Pero, el paquete .NET tambin incluye las clases necesarias para soportar las aplicaciones tradicionales de Windows, las denominadas aplicaciones Windows Forms (generacin de formularios, con caractersticas avanzadas), y tambin las aplicaciones que son servicios del sistema, que no requieren interfaz del usuario. As, por ejemplo, con el paquete .NET, tambin es posible la creacin de servicios para Windows 2000. .NET Framework permite el desarrollo de aplicaciones a travs del uso de un conjunto de herramientas y servicios que proporciona, y que podemos agrupar en tres bloques principales:

- 14 -

-

El Entorno de Ejecucin Comn o Common Language Runtime (CLR). Es el ncleo de .NET Framework, se encarga de la gestin del cdigo, su ejecucin, los temas de manipulacin de memoria, etc.

-

La jerarqua de clases bsicas de la plataforma o .NET Framework Base Classes. Constituyen un API de servicios para usar en la programacin de nuestras aplicaciones, por ejemplo, las clases para acceder a bases de datos (ADO.NET), para gestionar ficheros XML, gestin de hilos (threading), etc.

-

El motor de generacin de interfaz de usuario, que permite crear interfaces para la web (con la tecnologa ASP.NET) o para el tradicional entorno Windows (Windows Forms).

Podemos ver esta estructura de una forma ms representativa a travs del siguiente esquema de componentes de la plataforma .NET Framework:

ASP.NET

Windows Forms

.NET Framework Basse Classes (clases bsicas de la plataforma)ADO.NET XML THREADING Etc.

CLR, Common Language Runtime (Entorno comn de ejecucin de lenguajes) CTS CLS MSIL Gestin de memoria

En este manual vamos a centrarnos en la parte de ASP.NET, que, como hemos dicho, constituye la solucin de Microsoft para desarrollar aplicaciones Web, aunque su base sobre la que se apoya, el paquete .NET, es comn para desarrollar otro tipo de aplicaciones para Windows.

- 15 -

A continuacin, vamos a ver una serie de trminos relacionados con el CLR del .NET, que le dan la funcionalidad para permitir ser un entorno comn de ejecucin de lenguajes:

2.2. CLS Como vemos, el CLR es la base del sistema Microsoft .NET. Este motor hace que sea posible el desarrollo basado en mltiples lenguajes, y que sea posible la integracin y ejecucin de todos ellos en el entorno .NET. Esto se realiza gracias al seguimiento de las especificaciones del CLR por parte de los creadores de lenguajes y herramientas de desarrollo. Esta Especificacin Comn de Lenguajes se conoce como CLS (Common Language Specification), y consiste en un conjunto de caractersticas comunes que deben cumplir todos los lenguajes de la plataforma, para poder integrarse entre s. Esta integracin se refiere a que, por ejemplo, es posible escribir una clase en C#, y heredar de dicha clase desde VB.NET. Esto se produce gracias a que el entorno de ejecucin es comn, y el cdigo compilado no pasa directamente a cdigo ejecutable puro, sino a un cdigo intermedio (como veremos en el apartado de IL). Por ello, podemos decir que la plataforma .NET tiene soporte multi-lenguaje. Actualmente, estn soportados los lenguajes VB.NET, C#, C++ y Jscript.NET.

2.3. CTS Estas siglas corresponden a Common Type System, Sistema Comn de Tipos. Es el mecanismo del CLR que permite definir el modo en que los tipos sern creados y manipulados por el entorno de ejecucin de .NET Framework. As, todos los lenguajes pueden trabajar basndose en una serie de especificaciones de datos que hacen posible el intercambio de informacin y trabajo con las libreras bsicas de la plataforma .NET.

- 16 -

2.4. IL (MSIL) Estas siglas corresponden a Microsoft Intermediate Languaje, Lenguaje Intermedio de Microsoft. Es un lenguaje parecido al bytecode de Java, hacia el cual cualquier compilador integrado con Microsot .NET deber compilar su cdigo fuente, ya que es el nico entendible por el CLR. Este cdigo es independiente de la plataforma y del lenguaje que lo haya originado. La siguiente figura muestra un diagrama con el proceso de generacin de lenguaje intermedio a partir del cdigo fuente:

Cdigo fuente (C#, VB.NET,C++,...)

Compilador

Cdigo IL

- 17 -

RECUERDE

-

Para desarrollar aplicaciones ASP.NET necesitamos: el sistema operativo Windows 2000 Server/Professional, el servidor Web Internet Information Server 5.0 y el paquete Microsoft .NET Framework SDK (Software Development Kit) (adems del navegador Internet Explorer 6.0 y el Service Pack 2 de Windows 2000).

-

Tambin es recomendable disponer de la aplicacin Visual Studio .NET, que es un entorno de desarrollo para la plataforma .NET. Aunque no es imprescindible, nuestras pginas ASP.NET podemos escribirlas en cualquier editor de textos.

-

ASP.NET es un subconjunto de la tecnologa .NET de Microsoft, la parte relativa a la programacin Web. El paquete .NET tambin incluye las clases necesarias para soportar las aplicaciones tradicionales de Windows, las denominadas aplicaciones Windows Forms.

-

La plataforma .NET tiene soporte multi-lenguaje. Actualmente, estn soportados los lenguajes VB.NET, C#, C++ y Jscript.NET.

- 18 -

Tema 3

CONCEPTOS DE LA PROGRAMACIN ORIENTADA AOBJETOS

3.1. OBJETOS ____________________________________________ 21 3.2. ENCAPSULACIN ______________________________________ 21 3.2. ABSTRACCIN ________________________________________ 22 3.3. MENSAJES ___________________________________________ 23 3.4. CLASES______________________________________________ 23 3.5. HERENCIA____________________________________________ 24 3.6. MTODOS ____________________________________________ 26 3.7. POLIMORFISMO _______________________________________ 26 3.8. SOBRECARGA ________________________________________ 26 3.9. MODELO DE OBJETOS__________________________________ 27 3.10. RELACIONES ENTRE CLASES ___________________________ 27 3.11. VENTAJAS DE LA POO_________________________________ 28 3.12. INCONVENIENTES DE LA POO___________________________ 28

- 19 -

En este captulo vamos a tratar aspectos genricos de la Programacin Orientada a Objetos (POO), necesarios para poder utilizar correctamente el lenguaje en que vamos a programar nuestras pginas ASP.NET, es decir, el lenguaje C#. 3.1. OBJETOS El objeto es el concepto principal sobre el cual se fundamenta la tecnologa orientada a objetos. Un objeto puede ser visto como una entidad que posee un conjunto de atributos y que es capaz de realizar una serie de acciones. Esto es lo que define al objeto. Tambin podemos verlo como una representacin o modelizacin de un objeto real perteneciente a nuestro mundo. Por ejemplo, podemos tener un objeto bicicleta que represente a una bicicleta dentro de nuestra realidad, o bien un objeto factura, automvil o persona. Estos objetos son casos particulares de entidades llamadas clases en donde se definen las caractersticas comunes a tales objetos. Veamos el caso particular del objeto automvil, podemos mencionar como atributos de ste: el modelo, la marca, el color, el nmero de matrcula, nmero de bastidor, entre otros. Algunas acciones que es capaz de realizar un automvil son: frenar, acelerar y cambiar la velocidad. Este objeto automvil, es una instancia particular de la clase automvil. Los parmetros o variables que definen el estado de un objeto se denominan atributos o variables miembro, y las acciones que pueden realizar los objetos, se denominan mtodos o funciones miembro. Si lo comparamos con la programacin estructurada podramos hacer la siguiente aproximacin: los atributos, propiedades o variables miembro seran variables y los mtodos o funciones miembro seran procedimientos y funciones. 3.2. ENCAPSULACIN Es la tcnica de ocultar la implementacin interna de un objeto, es decir, cmo est construido y de qu se compone. Los atributos de un objeto deben encontrarse ocultos al resto de los objetos, esto es, no podemos acceder directamente a los atributos de un objeto para modificar su estado o consultarlo. Para acceder a los atributos de un objeto debemos utilizar mtodos. Normalmente, un objeto ofrece una parte pblica que ser utilizada por otros objetos para interactuar entre s, pero tambin contiene una parte oculta para encapsular los detalles de implementacin del objeto.

- 21 -

Por tanto, podemos ver un objeto como una caja negra que tiene un estado determinado que podemos conocer y cambiar mediante una serie de mtodos pblicos, que representan la interfaz del objeto. Como los atributos y la implementacin de cada objeto queda oculta a los dems objetos que interaccionan en el programa, se favorece la proteccin de los datos y la localizacin de errores en los programas (ya que cada objeto est altamente especializado, y slo se encarga de su tarea). Esto consigue una mayor modularidad y facilita el diseo en equipo de programas y la reutilizacin de clases (componentes), ya que podemos escribir cdigo de manera independiente de cmo se encuentren construidos los diferentes objetos que vamos a utilizar. Ocultando los detalles de implementacin, podremos realizar cambios en el cdigo interno de los objetos sin que ello afecte a otros objetos que los utilicen o dependan de ellos. 3.2. ABSTRACCIN Es la capacidad de ignorar los aspectos de implementacin de los objetos en los pasos iniciales, con lo que slo necesitamos conocer qu es lo que hace un objeto, y no cmo lo hace, para definir un objeto y establecer las relaciones de ste con otros objetos. Por ejemplo, cuando necesitemos indicarle al objeto automvil que mencionbamos antes, que acelere, no nos interesa conocer cmo realiza este proceso internamente el objeto (a travs de un cambio de marcha, mayor consumo de gasolina, etc.) sino nicamente la forma de indicarle que realice dicho comportamiento. Un objeto lo podemos representar como dos circunferencias, una interna que contiene todos los detalles de implementacin (variables y mtodos privados), y que permanece oculta al resto de objetos, y otra circunferencia concntrica externa, que representa lo que el objeto muestra al mundo exterior, la interfaz pblica que permite interactuar con l. Dicho de otro modo, no es necesario entender la implementacin interna de un objeto para poder utilizarlo.

Mtodos Pblicos (interfaz del objeto) Atributos y Mtodos Privados (encapsulados)

- 22 -

3.3. MENSAJES Son el mecanismo mediante el cual dos objetos pueden interactuar, comunicarse entre s. Un objeto solitario generalmente no es muy til. En cambio, casi siempre aparece como un componente de un programa mayor o una aplicacin que contiene muchos otros objetos. A travs de la interaccin de esos objetos, conseguimos una funcionalidad mayor. Los objetos interactan y se comunican mediante el envo de mensajes. As, cuando un objeto A quiere que otro objeto B realice una accin (un mtodo de la interfaz de B), el objeto A enva un mensaje al objeto B. Por tanto, un mensaje enviado a un objeto representa la invocacin de un determinado mtodo sobre dicho objeto, es decir, la ejecucin de una operacin sobre el objeto. De esta forma, los dos objetos implicados se comunican, ya que la ejecucin de ese mtodo devolver el estado del objeto invocado o lo modificar (cambiar su estado). Los mensajes a los que un objeto puede responder representan el comportamiento, las acciones que dicho objeto puede realizar. En nuestro ejemplo, el objeto coche es capaz de realizar la accin de cambiar de marchar, pero necesita de otro objeto (por ejemplo, un objeto persona) que interacte con l, que le indique la accin a realizar (tambin podr frenar, acelerar, etc.), y adems necesitar recibir la marcha a la que deseamos cambiar. Por tanto, para enviar un mensaje necesitamos: El objeto al que vamos a enviar el mensaje, en nuestro ejemplo, el objeto automvil, El nombre del mtodo (accin o comportamiento que queremos que realice), cambiar de marcha en nuestro automvil, etc. Los parmetros necesarios para el mtodo en cuestin, la marcha a la que deseamos cambiar. 3.4. CLASES Una clase es una plantilla, molde o prototipo en el que se definen los atributos (variables) y las acciones (mtodos) comunes para todos los objetos de un tipo determinado. Mediante las clases podremos crear (instanciar) objetos de un mismo tipo, estos objetos se distinguirn unos de otros a travs de su estado, es decir, el valor de sus atributos.

- 23 -

Siguiendo con el mismo ejemplo, nuestro coche es una instancia de la clase de objetos denominada Coches. Esta clase tiene algunos estados (marcha actual, nmero de marchas, color, potencia...) y comportamiento (frenar, girar, encender luces...) en comn. Sin embargo, el estado de cada objeto coche es independiente y puede ser diferente al del resto de objetos coche. La especificacin comn para todos los objetos del mismo tipo es lo que denominamos clase. Dicho de otro modo, la clase la vamos a utilizar para definir la estructura de un objeto, es decir, estado (atributos) y comportamiento (mtodos). Una vez implementada una clase podremos instanciar (crear) objetos que pertenezcan a esa clase. Utilizaremos la misma clase para crear distintos objetos. 3.5. HERENCIA Es el mecanismo mediante el cual podemos reutilizar clases ya definidas. Una vez definida una clase, podemos usarla como base para complicarla o especializarla. Es decir, los mtodos y atributos de una clase pueden transmitirse a las clases que descienden de ella. La clase hija puede aadir atributos, mtodos y redefinir los mtodos de la clase padre. Por eso, podemos ver la herencia como una sucesiva especializacin de las clases. La clase de la que se hereda se denomina clase padre o superclase, y la clase que hereda se denomina clase hija o subclase. A travs de este mecanismo de la POO, podemos agregar funcionalidades nuevas a una clase existente, reutilizando todo el cdigo que ya tenamos disponible en la clase padre. Por ejemplo, un turismo y una limusina son distintos tipos de coches. En una aplicacin orientada a objetos, el turismo y la limusina podran ser subclases de la clase coche. El turismo y la limusina comparten los atributos velocidad actual, marcha actual, nmero de plazas, etc. definidos en la clase Coche. Igualmente, cada subclase tambin hereda el mismo comportamiento definido en la superclase, por lo que, un turismo y una limusina tambin pueden realizar las acciones (mtodos) definidos en la clase Coche: frenar, cambiar de marcha, girar, etc. Para verificar que la herencia entre dos clases es correcta, debemos hacernos la pregunta es un tipo de ...?. En nuestro ejemplo tenemos una clase Limusina que hereda de la clase Coche. Esta herencia contesta claramente a esta pregunta: una limusina es tambin un coche?, cierto. Cada subclase puede definir atributos y mtodos propios para ella, que permiten diferenciar a la subclase de su superclase. Por ejemplo, una limusina puede incluir un telfono incorporado, una nevera o una televisin, caractersticas que no tiene un coche normal.

- 24 -

Las subclases tambin pueden sobrescribir mtodos de la superclase para proporcionar un comportamiento especial. Por ejemplo, la clase Coche puede contener un mtodo ObtenerNmeroDeMarchas() que siempre devuelva 5, mientras que un frmula 1 puede tener hasta 6 marchas, por lo que sobrescribira este mtodo para devolver 6 en lugar de 5. No hay lmite en cuanto al nivel de herencia. Podramos seguir definiendo nuevas clases que hereden de la clase Turismo, por ejemplo, las clases Monovolumen o Deportivo. Esto da lugar a una jerarqua de clases. La herencia puede ser simple, si la clase hija hereda de una nica clase padre, o mltiple, si hereda de varias clases. El lenguaje que usaremos en la programacin de las pginas ASP.NET de este manual, C#, soporta herencia simple. Tambin podemos definir clases abstractas, que son clases que definen comportamientos genricos, y en las que algunos mtodos no han sido implementados (son mtodos abstractos). El comportamiento de estos mtodos es totalmente libre para las subclases que hereden de sta y que debern implementar dichos mtodos abstractos para poder ser instanciadas.

Ejemplo de jerarqua de clases (herencia simple) Coche

Turismo

Limusina

Deportivo

Monovolumen

- 25 -

3.6. MTODOS Como ya hemos comentado anteriormente, los mtodos son las acciones que se pueden realizar con los objetos. Tambin podemos considerar un mtodo como la implementacin de un mensaje. Dentro de un objeto existen mtodos de uso interno, ocultos (privados), y mtodos pblicos, que constituyen la interfaz del objeto con el resto de objetos con quienes puede interaccionar. Cuando un objeto le enva un mensaje a otro, se produce la llamada o invocacin de un mtodo de dicho objeto. Los mtodos consultan o modifican el estado de un objeto. Son funciones dentro de un objeto, y como tales, pueden retornar un valor (informacin sobre el estado del objeto), o realizar una accin sobre el estado del mismo. 3.7. POLIMORFISMO Es otra ms de las caractersticas propias de la POO. Expresa la posibilidad de que el mismo mensaje, enviado a objetos distintos, ejecute mtodos distintos. Por lo tanto, es posible definir operaciones con el mismo nombre dentro de clases distintas. Cada operacin tendr la implementacin necesaria y propia para cada clase. Esto nos permite crear un interfaz comn para una serie de clases. Por ejemplo, supongamos que tenemos en nuestra aplicacin, una clase Enteros para modelar un nmero entero, y una clase Matrices, para modelar una matriz matemtica. Ambas clases necesitarn saber cmo se suman (cmo se suman dos objetos enteros, y cmo se suman dos objetos matrices). Podemos definir un mtodo suma() para la clase Enteros y otro mtodo suma() para la clase Matrices (ambas clases comparten el mismo nombre para esa operacin, pero la implementacin de estos mtodos ser distinta en cada clase, ya que no es lo mismo sumar enteros que matrices). 3.8. SOBRECARGA Otra de las tcnicas usadas en la POO. Se refiere a la posibilidad de tener en una misma clase, mtodos con el mismo nombre, pero que difieren en el tipo de los parmetros que reciben, en el nmero de ellos, o bien en el tipo y nmero de parmetros.

- 26 -

Por ejemplo, podemos tener, en la clase Matriz, dos mtodos sumar(), uno de ellos recibira un entero para sumar a la matriz, y el otro mtodo sumar(), podra recibir otro objeto matriz. El primer mtodo implementa la suma matemtica entre un entero y una matriz, y el segundo, la suma de matrices. 3.9. MODELO DE OBJETOS Una vez definido e identificado el problema que deseamos solucionar en nuestra aplicacin, debemos realizar una representacin lgica de los objetos que forman parte del problema en el mundo real, y utilizar en nuestro programa estos objetos computacionales (objetos dentro de nuestro cdigo), y las relaciones existentes entre dichos objetos, para que nuestra aplicacin funcione adecuadamente. Para ello, debemos aplicar los principios de la POO que hemos introducido en los apartados anteriores: abstraccin, encapsulacin, herencia y polimorfismo. 3.10. RELACIONES ENTRE CLASES Cada clase en nuestra aplicacin estar especializada en una funcin o tarea especfica, es decir, cada clase tiene su cometido. Para ofrecer una mayor funcionalidad y realizar tareas ms complejas es necesario que exista una relacin entre distintas clases, una forma de interaccin o comunicacin entre ellas. As, una clase puede relacionarse con otra a travs de: Una relacin de composicin: cuando una clase est compuesta de otras clases. Esto ocurre cuando los atributos de una clase se implementan como objetos de otra clase. Por ejemplo, la clase Coche tiene atributos como son la clase Puerta, Motor, Rueda, Chasis, etc. Una relacin de uso: cuando una clase se relaciona con otra a travs de los mensajes que le enva, pasndole una instancia de una clase como parmetro del mtodo invocado por el mensaje. Por ejemplo, al invocar al mtodo suma de una matriz, le pasamos un objeto entero para que lo sume a un objeto matriz. Una relacin de herencia: ya la hemos visto en el apartado de la Herencia. Consiste en que una clase hereda de una clase padre o superclase, obteniendo as toda la funcionalidad ofrecida por la clase padre y pudiendo aadir nuevas funcionalidades. Con esta forma de relacin conseguimos una mayor reutilizacin del cdigo y una mayor especializacin a travs de la jerarqua de clases. Las clases iniciales en esta jerarqua son ms generales, y a medida que profundizamos en la jerarqua de la descendencia, las clases hijas estn ms especializadas, implementan tareas ms concretas.

- 27 -

3.11. VENTAJAS DE LA POO Facilita la reutilizacin del software, como ya hemos comentado, a travs de la herencia. Adems, la encapsulacin nos facilita el uso de objetos que no hemos implementado todava, pero de los que conocemos qu hacen. Facilita el mantenimiento de los programas y la deteccin de errores. La encapsulacin nos garantiza que las modificaciones realizadas en el ncleo de un objeto tendrn un efecto limitado y localizado, su interfaz de comunicacin con el resto de objetos se mantendr, por lo que podremos seguir comunicndonos con l de igual forma. Las tareas de anlisis, diseo e implementacin son ms intuitivas, ya que los objetos en nuestros diseos van a representar objetos presentes en el mundo real. 3.12. INCONVENIENTES DE LA POO La curva de aprendizaje suele ser ms larga que la necesaria en la programacin estructurada, debido principalmente a que implica un cambio de mentalidad adems de aprender un nuevo lenguaje orientado a objetos. Dificultad en determinar las caractersticas de un objeto, porque debemos tener en cuenta las relaciones con otros objetos. A veces, el establecimiento de nuevas relaciones puede implicar un cambio en la definicin del objeto. Jerarquas de herencia complejas, que pueden llegar a ser confusas, en el caso de la herencia mltiple (una clase puede heredar de ms de una clase). C#, el lenguaje que usaremos en nuestras pginas ASP.NET, soporta herencia simple (cada clase slo puede heredar de una nica superclase).

- 28 -

RECUERDE

-

Los lenguajes de programacin orientados a objetos permiten el encapsulamiento, la abstraccin, la herencia y el polimorfismo.

-

El encapsulamiento separa la interfaz de la implementacin ocultando los datos dentro del objeto y permitiendo el acceso a los datos de dicho objeto a travs de funciones miembro (mtodos).

-

Las subclases heredan las funciones miembro y las variables de sus clases padre, haciendo sencilla la reutilizacin de las funcionalidades de las clases padre.

-

El polimorfismo permite crear cdigo genrico y reutilizable que podr funcionar con una amplia gama de clases diferentes.

- 29 -

Tema 4

CREANDO UNA PGINABSICA

4.1. COMENTANDO EL EJEMPLO_____________________________ 34 4.2. SINTAXIS DE C# _______________________________________ 36 4.3. DECLARACIN DE VARIABLES ___________________________ 37 4.4. COMENTARIOS ________________________________________ 37 4.5. SENTENCIAS CONDICIONALES ___________________________ 38 4.5.1. Condicional if .. else______________________________ 38 4.5.2. Condicional mltiple switch ________________________ 38 4.6. BUCLES______________________________________________ 40 4.6.1. Bucle do .. while _________________________________ 40 4.6.2. Bucle while _____________________________________ 40 4.6.3. Bucle for _______________________________________ 41 4.6.4. Bucle foreach .. in ________________________________ 41 4.7. OPERADORES ________________________________________ 42 4.7.1. Operadores aritmticos____________________________ 42 4.7.2. Operadores lgicos_______________________________ 42 4.7.3. Operadores de asignacin _________________________ 43 4.7.4. Operadores de comparacin________________________ 43 4.7.5. Operador de concatenacin ________________________ 43 4.7.6. Otros operadores ________________________________ 43 4.8. MANEJADORES DE EVENTOS ____________________________ 44 4.9. TRATAMIENTO DE ERRORES ____________________________ 44 4.10. DEFINICIN DE CLASES________________________________ 46 4.11. INSTANCIACIN DE CLASES ____________________________ 47 4.12. MODIFICADORES _____________________________________ 51 4.12.1. Modificadores de acceso__________________________ 51 4.12.2. Otros modificadores _____________________________ 52

- 31 -

En este captulo vamos a realizar una pgina ASP.NET que muestra el famoso mensaje Hola Mundo cuando pulsemos sobre el botn incluido en la pgina. Utilizaremos el lenguaje C# a lo largo del manual, por ser un lenguaje de ltima generacin, pensado para los desarrolladores Web, y que se adapta mejor a los estndares de C++ y Java. Por tanto, tras comentar nuestro primer ejemplo, veremos una introduccin a la sintaxis de C#. Nuestra primera pgina ASP.NET: holaMundo.aspx Mi primera pgina ASP.NET void pulsado (Object origen, EventArgs args) { etiqueta.Style[font-size]=20; etiqueta.Text=Hola Mundo!; } Para poder ejecutar esta pgina ASP.NET, debemos escribir el cdigo anterior en un fichero con extensin .aspx, colocarlo en un directorio de publicacin en Internet (que adems posea el permiso de ejecucin de secuencias de comandos) y ejecutar la pgina a travs del servidor Web (por ejemplo, escribiendo en nuestro navegador http://localhost/holaMundo.aspx).

- 33 -

Al hacerlo, aparecer una pgina vaca que presenta nicamente un botn con el texto Plsame. Si hacemos click sobre l, se mostrar el mensaje Hola Mundo!.

Editando el cdigo de nuestra primera pgina ASP.NET en el entorno Visual Studio .Net 4.1. COMENTANDO EL EJEMPLO El fragmento de cdigo que aparece entre las etiquetas , donde se especifica que dicho cdigo est escrito en C# (si hubisemos utilizado otro lenguaje de los soportados por la plataforma .NET, se indicara aqu, como por ejemplo, VB.NET), define un mtodo que se ejecutar cuando el usuario pulse el botn que pertenece al Web Form (formulario Web en ASP.NET). Este mtodo trata el evento de pulsacin del botn (onclick=pulsado en la definicin del control ). Este mtodo no devuelve ningn valor (void) y recibe dos parmetros, que ofrecen informacin acerca del evento que se ha producido (aunque en este ejemplo no usamos dichos parmetros porque no es necesario para mostrar nuestro mensaje). Dentro del mtodo accedemos al estilo de la etiqueta , para darle un tamao determinado, y a continuacin, establecemos el valor de la propiedad Text de la etiqueta con el mensaje Hola Mundo!.

- 34 -

Podemos observar que, el delimitador de sentencias en C# es el punto y coma (;), y el delimitador de bloques de cdigo, los corchetes ({}). A continuacin de la definicin del mtodo y del cierre de las etiquetas , nos encontramos con la definicin de un Web Form (formulario Web), que ser el que va a contener la etiqueta y el botn. Podemos ver que las sintaxis es muy similar a la utilizada para definir un formulario tpico HTML, la diferencia est en la inclusin de la propiedad runat que posee el valor server, para indicar que se trata de un formulario de servidor. Dentro del formulario se encuentran dos controles Web que pertenencen a las clases Label y Button (en el captulo 5 veremos los controles Web con ms detalle). El control Label representa a la etiqueta que mostrar el mensaje en la pgina, y el objeto Button es el botn que invocar el mtodo pulsado( ) cuando el usuario haga click sobre l. Estos dos controles tienen un atributo id, que es el nombre a travs del cual podremos acceder a sus propiedades. As, en el mtodo pulsado utilizamos el identificador etiqueta para acceder al objeto Label, y modificar su propiedad Text, que inicialmente no tena valor. El control Button posee la propiedad onclick, en la que podemos indicar el mtodo responsable de tratar el evento de pulsacin. Mediante los Web Forms de ASP.NET, tenemos acceso a todos los controles, ya que forman parte de la pgina y se comportan como propiedades de la misma.

Resultado de la ejecucin de nuestra pgina holaMundo.aspx en el navegador

- 35 -

4.2. SINTAXIS DE C# El lenguaje C# presenta una serie de palabras bsicas reservadas para el propio lenguaje, y que por tanto, no podremos usar en nuestros nombres de clases, variables, propiedades, funciones o mtodos. Estas palabras reservadas son: abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual volatile while

C# se asimila bastante a lenguajes como C++ o Java. Distingue entre maysculas y minsculas. Por lo tanto, debemos tener cuidado al escribir nuestro cdigo, por ejemplo, si queremos declarar una variable de tipo long, debemos escribir long y no Long o LONG (para el compilador del lenguaje estas tres palabras son palabras distintas). Por convencin, los nombres de mtodos y las clases tienen la primera letra de cada una de sus partes en maysculas, as por ejemplo, tenemos la clase DropDownList. Los tipos simples del lenguaje C# se escriben con todas sus letras en minscula.

- 36 -

Todas las instrucciones en C# acaban con un punto y coma ;. El separador de bloques de cdigo, como ya hemos mencionado, son los corchetes ({}). 4.3. DECLARACIN DE VARIABLES Para declarar una variable (tanto si es una referencia a un objeto o a un tipo simple), primero indicamos el tipo de la variable, es decir, el tipo simple o clase, y a continuacin el nombre de la variable. Si la variable posee algn modificador de acceso (como private o public) o de otro tipo, este modificador debe aparecer antes del tipo de la variable. (Veremos los modificadores al final del captulo). Ejemplo: string cadena; int num_aleatorio; public DateTime fechaActual; 4.4. COMENTARIOS Podemos usar comentarios de lnea simple o de un grupo de lneas: // Cdigo comentado de lnea simple /* Cdigo comentado que ocupa varias lneas. Siguiente lnea de comentario. El cdigo comentado no se ejecutar. */

- 37 -

4.5. SENTENCIAS CONDICIONALES 4.5.1. Condicional if .. else Su sintaxis es la siguiente (la inclusin de la sentencia else es opcional, por eso va entre corchetes): if (expresin) { cdigo para expresin verdadera } [else { cdigo para expresin falsa }] Veamos un ejemplo de su uso: 4.5.2. Condicional mltiple switch switch (expresin) { case expresin_constante1: cdigo break;

- 38 -

case expresin_constante2: cdigo break; ... [default: cdigo break; ] } Veamos un ejemplo de su uso:

- 39 -

4.6. BUCLES 4.6.1. Bucle do .. while do { cdigo } while (expresin) Ejemplo de su uso: 0); %>

4.6.2. Bucle while while (expresin) { cdigo } Ejemplo de su uso: = Mayor o igual que. NereaBarranco31 LuisCosta23 SergioRuano29 AntonioAguilar28

- 89 -

RECUERDE

-

Los controles Web de lista DataList y DataGrid son controles especializados en mostrar listados de datos en las pginas ASP.NET.

-

Estn vinculados a un conjunto de datos. ASP.NET genera el cdigo HTML necesario para representar los datos adecuadamente en forma tabular o lineal.

-

- 90 -

Tema 7

DIRECTIVAS DEPGINAS

7.1. LA DIRECTIVA @PAGE__________________________________ 93 7.2. LA DIRECTIVA @IMPORT ________________________________ 95 7.3. LA DIRECTIVA @IMPLEMENTS ___________________________ 96 7.4. LA DIRECTIVA @ASSEMBLY _____________________________ 96

- 91 -

Una directiva es un identificador que incluimos en una nuestra pgina ASP.NET y que informa al entorno de ejecucin de ciertas caractersticas clave de dicha pgina, como el lenguaje en que est programada (recordemos que la plataforma .NET soporta varios lenguajes) o las libreras que se importarn. Es decir, mediante estas directivas podremos declarar una serie de atributos de la pgina ASP.NET actual, que tendrn repercusin a la hora de crearla. Estas directivas de pgina tienen el siguiente formato: Lo primero que escribimos es el nombre de la directiva, seguida de una serie de pares atributo-valor que definen los datos relativos a cada una de las directivas. Estos pares atributo-valor van separados por el carcter espacio y el valor va entrecomillado. Podemos situar estas directivas en cualquier lugar de la pgina, pero por convencin, se suelen situar al principio del cdigo. Cada directiva comienza con el identificador . Esta sintaxis es parecida a los identificadores de cdigo ASP, slo que con un smbolo de arroba al final del identificador de apertura. A continuacin vamos a ver las directivas disponibles en ASP.NET:

7.1. LA DIRECTIVA @PAGE Esta directiva es la ms utilizada de todas, y la que mayor nmero de atributos tiene. Esta directiva soporta los atributos existentes para la nica directiva que se poda utilizar en versiones anteriores de ASP. Por ejemplo, la directiva de ASP, equivale en ASP.NET a . En cada pgina nicamente puede existir una directiva Page. Los valores principales que puede llevar esta directiva son los siguientes: AspCompat: Valores: true false. Valor por defecto: false. El sistema ASP.NET guarda compatibilidad con ASP 3.0. Debemos poner este atributo a true para poder ejecutar DLL ActiveX desarrolladas para el sistema anterior de pginas ASP.

- 93 -

-

AutoEventWireup: Valores: true false. Valor por defecto: true. Este atributo indica si los eventos de la pgina (UnLoad, Load, Init, etc) se van a lanzar de forma automtica.

-

Buffer: Valores: true false. Valor por defecto: true. Se utiliza para activar o desactivar el bfer de la pgina ASP.NET actual.

-

ClassName: Esta propiedad contiene un valor de cadena que indica el nombre de la clase de la pgina actual.

-

ContentType: Contiene una cadena que describe el tipo MIME devuelto por la pgina. Esta informacin se enviar como cabecera HTTP al navegador. Habitualmente, este tipo ser text/html o text/plain.

-

EnableSessionState: Valores: true, false o ReadOnly. Valor por defecto: true. Este atributo informa al sistema si esta pgina tendr acceso al sistema de gestin y mantenimiento de sesiones, es decir, si se permite o no la utilizacin de la propiedad Session de la clase Page. El valor ReadOnly indica que la pgina nicamente podr leer variables de sesin, pero no modificarlas ni crear variables nuevas.

-

EnableViewState: Valores: true false. Valor por defecto: true. Esta propiedad permite activar o desactivar el mantenimiento automtico de los valores de los controles Web dentro de un formulario.

-

ErrorPage: Valores: URL de la pgina de error. Este atributo contiene la pgina de error que se va a utilizar en el caso de que se produzca una excepcin no tratada en la ejecucin de la pgina.

-

Inherits: Valores: nombre de clase. Con esta propiedad informamos al compilador que la pgina actual hereda de la clase especificada.

-

Language: Valores: vb, c# e identificadores de lenguajes compatibles con Microsoft .NET true false. Valor por defecto: vb. Define el lenguaje en que est programada la pgina actual, es el lenguaje al que se compilar todo el cdigo fuente de la pgina.

-

Src: Este atributo contiene el nombre de un fichero que contiene cdigo que podr ser utilizado en la pgina (es una forma de separacin de cdigo, permite tener un bloque de cdigo en un fichero separado de la pgina ASP.NET).

- 94 -

-

WarningLevel: Valores: de 0 a 4. Define el nivel de informacin que queremos utilizar al compilar nuestras pginas. Cuanto mayor nivel especifiquemos, ms estricto ser el compilador a la hora de informar sobre potenciales fallos de sintaxis o funcionamiento de nuestro cdigo fuente.

Ejemplo de uso de esta directiva: En este caso hemos indicado que el lenguaje utilizado en el cdigo fuente de la pgina es C#, que el tipo de contenido que va a devolver la pgina ASP.NET es HTML (text/html) y que nicamente podremos leer las variables de sesin.

7.2. LA DIRECTIVA @IMPORT Esta directiva la usaremos para importar de forma explcita un espacio de nombres (NameSpace) determinado. Al importar un espacio de nombres determinado tendremos acceso a todas las clases definidas en l. Este espacio de nombres puede ser propio de la plataforma .NET Framework, o bien un espacio de nombres definido por nosotros. nicamente podemos indicar un espacio de nombres por directiva Import, por lo que si queremos importar ms de un espacio de nombres, deberemos utilizar una directiva Import por cada uno. Su sintaxis es: El sistema importa automticamente una serie de espacios de nombres para las pginas ASP.NET, por lo que no tenemos que importarlas de forma explcita con la directiva Import, y tendremos acceso a todas sus clases. stos son: System System.Collections

- 95 -

-

System.Collections.Specialized System.Configuration System.IO System.Text System.Text.RegularExpressions System.Web System.Web.Caching System.Web.Security System.Web.SessionState System.Web.UI System.Web.UI.HtmlControls System.Web.UI.WebControls

7.3. LA DIRECTIVA @IMPLEMENTS Esta directiva nos permite implementar un interfaz determinado dentro de una pgina ASP.NET. Implementar un interfaz significa dar contenido a sus mtodos, propiedades y eventos. Al igual que ocurra con la directiva anterior, si deseamos implementar varios interfaces en la pgina, debemos utilizar varias directivas Implements, una por cada interfaz. Su sintaxis es: 7.4. LA DIRECTIVA @ASSEMBLY Esta directiva importa una librera DLL o Assembly dentro de nuestra aplicacin, haciendo visibles todos sus espacios de nombres y clases a nuestro cdigo. Normalmente, esta directiva no se utiliza, ya que cuando una librera DLL se encuentra en el directorio bin de la aplicacin Web, no es necesario indicar dicha librera mediante la directiva Assembly, porque ya se encuentra disponible por encontrarse en este directorio especial.

- 96 -

Si deseamos hacer referencia a varias libreras DLL, debemos utilizar una directiva por cada una. Esta directiva cuenta con los siguientes atributos: Name: Especifica el nombre del assembly compilado (sin extensin). Src: Especifica la ruta del fichero de cdigo fuente que define el assembly, en este caso s debemos indicar la extensin correspondiente. El sistema compilar de forma dinmica el cdigo fuente en vez de encontrarse con el Assembly ya compilado. Ejemplo de su uso:

En la documentacin tcnica de Visual Studio .NET podemos encontrar una referencia completa de todas las directivas en ASP.NET.- 97 -

RECUERDE

-

Hemos visto las directivas @Page, @Import, @Implements y @Assembly. Las directivas son identificadores que suelen aadirse al principio de cada pgina ASP.NET y que informan al sistema de ciertas caractersticas clave de dicha pgina.

-

-

Cada directiva puede contener uno o ms pares atributo-valor. Nos permiten especificar datos como el lenguaje en que est programada la pgina, tipo de acceso a las variables de sesin, tipo de contenido devuelto por la pgina, importacin de los espacios de nombres necesarios, etc.

-

- 98 -

Tema 8

CONFIGURACIN DEIIS

8.1. HERRAMIENTA DE ADMINISTRACIN DE SERVICIOS DE INTERNET 103 8.2. CONFIGURACIN DE IIS___________________________________ 104 8.2.1. Ficha Sitio Web ____________________________________ 105 8.2.2. Ficha Directorio particular ___________________________ 105 8.2.3. Ficha Documentos _________________________________ 106 8.2.4. Ficha Rendimiento _________________________________ 107 8.3. LA APLICACIN WEB _____________________________________ 108

- 99 -

Internet Information Server(IIS) es un servidor Web que permite publicar informacin en una intranet o en Internet. Este servidor Web se apoya sobre el protocolo de transferencia de hipertexto (HTTP), para transmitir la informacin y comunicarse con los clientes. Es el servidor Web sobre el que se ejecutan las pginas ASP.NET. Desde su versin 3 incluye las versiones anteriores de ASP. Al instalar IIS 5.0 se instala por defecto ASP 3.0. ASP.NET es compatible con ASP, es decir, podemos tener aplicaciones Web basadas en ASP y ASP.NET funcionando en el mismo servidor Web Internet Information Server 5.0. Las pginas ASP tienen la extensin .asp y son procesadas por la DLL ASP.DLL, mientras que las pginas ASP.NET poseen la extensin .aspx y son procesadas con el entorno de ejecucin .NET Framework. El servidor Web atiende las peticiones de pginas de los clientes, identifica de qu tipo de pgina se trata, las procesa y les enva el resultado a los navegadores. Internet Information Server 5.0 es un servidor Web para plataformas Windows 2000 (est totalmente integrado con el sistema operativo, forma parte de la instalacin de Windows 2000 y permite disponer de un servidor Web tanto en el entorno de una Intranet como en el entorno de Internet). Podemos acceder a su administracin a travs del Administrador de servicios de Internet, es un entorno escalable basado en los componentes cliente/servidor que se pueden integrar dentro de las aplicaciones Web. Podemos saber si tenemos instalado IIS 5.0 en nuestra mquina escribiendo la siguiente URL: http://localhost en el navegador Web. Si aparece una ventana similar a la que presentamos a continuacin, significa que lo tenemos instalado.

- 101 -

Tambin podemos comprobarlo viendo si tenemos el Administrador de servicios de Internet dentro del grupo de programas Herramientas administrativas en el men Inicio de Windows. Por defecto, la ruta del directorio de publicacin en Internet es c:\Inetpub\wwwroot.

- 102 -

8.1. HERRAMIENTA DE ADMINISTRACIN DE SERVICIOS DE INTERNET A travs de la consola del Administrador de Servicios de Internet podemos administrar y configurar en un mismo entorno todos los servicios del servidor IIS 5.0. Su uso es bastante intuitivo. Esta consola se divide en dos paneles. El panel de la izquierda es denomina panel de alcance y el de la derecha, panel de resultados.

Consola del Administrador de Servicios de Internet En el panel de alcance aparecen los servidores que podremos administrar, se representan mediante un icono de un ordenador acompaado del nombre del servidor. El asterisco (*) seala el servidor local (IIS tambin permite realizar la administracin remota de otros servidores IIS 5.0) Cada uno de los nodos del rbol que aparece en el panel de alcance son instancias de servicios individuales, y a su vez, stos pueden contener un conjunto de objetos administrables. Podemos acceder a las propiedades de cualquiera de estos nodos a travs del men desplegable que aparece pulsando el botn derecho del ratn. El panel de resultados visualiza los contenidos referentes al nodo seleccionado en el panel de alcance.

- 103 -

8.2. CONFIGURACIN DE IIS A lo largo de los siguientes apartados veremos las opciones de configuracin necesarias y ms relacionadas con la ejecucin de pginas ASP.NET. La configuracin de IIS se basa en la utilizacin de hojas de propiedades, a las que accedemos como hemos visto, pulsando el botn derecho del ratn sobre el elemento a configurar, y seleccionando la opcin Propiedades que aparece en este men contextual. Cada hoja de propiedades mostrar una serie de parmetros para configurar, dependiendo del elemento seleccionado (directorio, sitio Web o fichero).

Hoja de propiedades de un sitio Web

- 104 -

Para publicar documentos en el sitio Web, debemos copiar los ficheros correspondientes al directorio de publicacin del sitio Web (que por defecto es, c:\Inetpub\wwwroot, pero lo podemos cambiar a travs de su hoja de propiedades, a cualquier otro directorio del disco duro). 8.2.1. Ficha Sitio Web Es necesario que cada sitio Web tenga un directorio de publicacin. Adems, cada sitio Web debe tener asignada una direccin IP y un nmero de puerto (para poder identificarlo). Por defecto, el servicio Web se encuentra en el puerto 80. Podemos acceder y cambiar todos estos valores desde la hoja de propiedades del sitio Web. Otro de los valores configurables es el nmero de conexiones de clientes que aceptamos a nuestro sitio Web (podemos indicar un nmero, o elegir la opcin Ilimitado). Tambin podemos indicar el tiempo de espera mximo (time-out) utilizado para establecer una conexin. Esto asegura que se cerrarn todas las conexiones si el protocolo HTTP no puede establecer una conexin desde el cliente en el tiempo especificado (por defecto son 900 segundos). Otra de las opciones configurables es la activacin o no del registro de los accesos al sitio Web y el formato de archivo en el que se almacena esta informacin. 8.2.2. Ficha Directorio particular En la ficha Directorio particular de la hoja de propiedades, podemos modificar el directorio de publicacin del sitio Web, indicar si deben registrarse las visitas, y el tipo de acceso que va a tener el usuario: Acceso al cdigo fuente de secuencias de comandos. Lectura. Escritura. Examinar directorios.

La opcin Permisos de ejecucin es relativa a la ejecucin de aplicaciones ASP/ASP.NET, y significa: Ninguno: no permite la ejecucin de programas ni secuencias de comandos en el directorio. Slo secuencias de comandos: para permitir la ejecucin de las pginas ASP y ASP.NET.

- 105 -

-

Sec. Comandos y ejecutables: permite ejecutar cualquier aplicacin en el directorio.

Ficha Directorio particular de la hoja de propiedades de un sitio Web 8.2.3. Ficha Documentos En esta ficha de la hoja de propiedades, podemos indicar la pgina por defecto del sitio Web (es la pgina que se presentar cuando no especifiquemos ningn fichero en concreto de nuestro sitio). Este documento predeterminado puede ser una pgina HTML, una pgina ASP o una pgina ASP.NET. El orden en el que indiquemos estos documentos es significativo, ya que el servidor Web devolver el primero que encuentre de ellos.

- 106 -

Ficha Documentos de la hoja de propiedades de un sitio Web 8.2.4. Ficha Rendimiento En esta hoja podemos configurar el ajuste del rendimiento de nuestro servidor atendiendo al nmero de accesos que se espera por da: Menos de 10.000 Menos de 100.000 Ms de 100.000

Tambin podemos limitar el ancho de banda a los KB/s que estimemos apropiados y asignar un lmite de proceso de uso de la CPU (expresado en tanto por ciento).

- 107 -

Ficha Rendimiento de la hoja de propiedades de un sitio Web 8.3. LA APLICACIN WEB Una aplicacin Web es un conjunto de ficheros que se ejecutan dentro de un conjunto definido de directorios del sitio Web. Desde la consola de administracin de IIS 5.0 deberemos indicar el punto de arranque de la aplicacin y hasta dnde se extiende. Podemos distinguir los directorios de arranque de una aplicacin Web porque el Administrador de servicios de Internet los muestra con un icono especial, con una pequea bola con un aspa metida en una caja. En cada aplicacin ASP.NET podemos distinguir dos tipos de contextos o estados, uno de aplicacin (informacin accesible y compartida por todos los clientes) y otro de sesin (informacin por cada usuario de la aplicacin). Lo veremos ms detalladamente en el captulo dedicado al archivo Global.asax.

- 108 -

Para crear el punto de inicio de una aplicacin Web, y por tanto, crear la aplicacin ASP.NET, debemos seleccionar en el Administrador de servicios de Intenet el directorio raz o inicial que contiene sus pginas, y en la ficha Directorio de su hoja de propiedades, pulsar el botn Crear (dentro del apartado Configuracin de la aplicacin). De forma automtica se crear la aplicacin y aparecern dos nuevos botones Quitar y Configurar. El botn Quitar se utiliza para eliminar la aplicacin creada, y el segundo botn para configurarla.

ASP.NET ofrece un sistema de configuracin de aplicaciones basado en ficheros XML, de modo que, cada aplicacin poseer un fichero de configuracin denominado Web.config. Veremos este fichero en el prximo captulo.

- 109 -

RECUERDE

-

Las pginas ASP.NET se ejecutan sobre el servidor Web Internet Information Server 5.0. (IIS 5.0 forma parte de la instalacin de Windows 2000).

-

ASP.NET es compatible con ASP. El servidor Web atiende las peticiones de pginas de los clientes, identifica de qu tipo de pgina se trata, las procesa y les enva el resultado a los navegadores.

-

A travs de la consola del Administrador de Servicios de Internet podemos administrar y configurar en un mismo entorno todos los servicios del servidor IIS 5.0.

-

A travs de la hoja de propiedades del sitio Web podemos configurar el directorio de publicacin de nuestras pginas, el nmero de conexiones de clientes que aceptamos, el tiempo de espera mximo (time-out) utilizado para establecer una conexin, permisos de ejecucin, la pgina por defecto, establecer lmites sobre el ancho de banda utilizado para el sitio Web, etc.

-

Debemos indicar el punto de inicio de una aplicacin ASP.NET para crearla. Esto lo podemos hacer a travs de la hoja de propiedades del directorio inicial de la aplicacin en la consola del Administrador de Servicios de Internet.

-

Cada aplicacin ASP.NET posee un fichero de configuracin denominado Web.config.

- 110 -

Tema 9

GLOBAL.ASAX

EL ARCHIVO

9.1. EVENTOS DE SERVIDOR _______________________________ 113 9.2. GESTIN DEL ESTADO DE LA APLICACIN ASP.NET ________ 115

- 111 -

En la versin anterior del sistema de pginas activas ASP, disponamos de la opcin de utilizar el fichero GLOBAL.ASA. Este fichero estaba situado en el directorio raz de nuestro servidor Web o de nuestro directorio virtual, y se ejecutaba al iniciarse nuestra aplicacin Web. Este fichero se utilizaba para insertar en l el cdigo a ejecutar en los eventos de inicio y finalizacin de las distintas sesiones de usuario y de la aplicacin. En el nuevo sistema ASP.NET disponemos de un mecanismo similar, representado por el fichero GLOBAL.ASAX. En l se sigue un formato similar al de la pginas ASP.NET: [Mtodos para el tratamiento de eventos, inicializacin de objetos con mbito de Sesin y Aplicacin]

9.1. EVENTOS DE SERVIDOR Veamos los principales eventos que podemos tratar en el fichero GLOBAL.ASAX: Application_OnStart: este evento se lanza cuando se inicia la ejecucin de la aplicacin ASP.NET correspondiente, y tiene lugar cuando el primer usuario carga una pgina ASP.NET perteneciente a la aplicacin. Dentro de este evento indicaremos el cdigo de inicializacin de la aplicacin. Application_OnEnd: es el evento contrario al anterior. Se lanza cuando finaliza la ejecucin de la aplicacin ASP.NET. Esta finalizacin de la ejecucin puede ocurrir por varios motivos: cuando finaliza la ltima de las sesiones de un usuario con la aplicacin, cuando se apaga el servidor Web o si se modifica el cdigo fuente del fichero GLOBAL.ASAX (porque ello fuerza una compilacin del fichero). Dentro de este evento colocaremos el cdigo de limpieza de la aplicacin (como liberar los recursos utilizados) o que deba ejecutarse al finalizar nuestra aplicacin.

- 113 -

-

Session_OnStart: este evento se lanza cuando se inicia una nueva sesin dentro de una aplicacin ASP.NET. El inicio de sesin se produce para cada usuario cuando solicita la primera pgina de la aplicacin. Dentro de este evento colocaremos el cdigo que debe ejecutarse antes de que se cargue la primera pgina de la aplicacin, como el cdigo para inicializar las variables para toda la sesin (la identificacin del usuario o sus preferencias por ejemplo) para que estos valores estn disponibles para ese usuario mientras su sesin permanezca activa. Para que se produzca este evento, se debe haber lanzado previamente el evento Application_OnStart.

-

Session_OnEnd: es el evento contrario al evento Session_OnStart. Se lanza cuando finaliza una sesin de usuario. Este hecho puede producirse porque haya caducado la sesin al permanecer inactiva el tiempo indicado en su propiedad Timeout, o bien, porque se ha forzado mediante una llamada al mtodo Abandon() de la clase System.Web.SessionState.HttpSessionState (clase que representa la sesin de un usuario en la aplicacin ASP.NET). Si finaliza la ejecucin de la aplicacin se ejecutarn todos los eventos Session_OnEnd de cada sesin de usuario antes de lanzarse el evento Application_OnEnd.

-

Application_OnDisposed: este evento es lanzado cuando la aplicacin ASP.NET inicia su descarga de memoria, y se producir antes del evento Application_OnEnd.

Los eventos Application_OnStart, Application_OnDisposed y Application_OnEnd se lanzan una nica vez durante toda la vida de la aplicacin ASP.NET, mientras que los eventos Session_OnStart y Session_OnEnd se ejecutarn repetidas veces durante la vida de la aplicacin, dependiendo de las sesiones que hayan iniciado los usuarios con la aplicacin ASP.NET. El esquema siguiente muestra el orden en que se producen los eventos que hemos visto, y tambin la circunstancia que provoca el lanzamiento de cada evento:

- 114 -

El primer usuario se conecta y solicita una pgina de la aplicacin

Application_OnStart

Un usuario inicia una sesin con la aplicacin

Session_OnStart

La sesin caduca Se llama al mtodo Abandon() de Session

Session_OnEnd

Termina la ltima sesin con la aplicacin Finaliza el servidor Web Se modifica el fichero GLOBAL.ASAX

Application_OnDisposed

Application_OnEnd

9.2. GESTIN DEL ESTADO DE LA APLICACIN ASP.NET La gestin del estado de la aplicacin ASP.NET consiste en la permanencia de objetos o valores a lo largo de la vida de la aplicacin y a lo largo de cada sesin de usuario en la aplicacin. No se puede mantener el estado entre diferentes pginas Web a travs del protocolo HTTP (protocolo sobre el que se apoya el sistema ASP.NET, ya que es un protocolo sin estado). ASP.NET nos permite almacenar informacin entre diversas solicitudes de pginas dentro de una aplicacin a travs de los objetos Session y Application (estos objetos ya se encontraban disponibles en la versin anterior de ASP). Estos objetos integrados en encuentran en las dos propiedades del mismo nombre del objeto Page (que representa a una pgina ASP.NET, lo vimos en el captulo 5), y tambin en la clase HttpApplication (clase que representa a una aplicacin ASP.NET), a travs de las propiedades Application y Session: El objeto Session: este objeto nos permite almacenar el estado de cada usuario que ha iniciado una sesin con la aplicacin. Esta informacin se mantendr a lo largo de toda la vida de cada sesin particular para cada usuario, es decir, cada usuario tendr sus variables y sus valores. Este objeto es una instancia de la clase

- 115 -

System.Web.SessionState.HttpSessionState. La sintaxis para almacenar un objeto en el objeto Session y recuperarlo, es: Session[CadenaClave]=objeto; objeto=Session[CadenaClave]; El objeto Application: este objeto nos permite almacenar la informacin que es comn para toda la aplicacin. Las variables almacenadas dentro de este objetos son accesibles a todos los usuarios que estn utilizando la misma aplicacin ASP.NET en cualquiera de sus pginas. En contraposicin al objeto Session, cuyas variables son particulares para cada uno de los usuarios conectados, no se comparten y son propias de la sesin de cada uno. Este objeto es una instancia de de la clase System.Web.HttpApplicationState. El almacenamiento de los objetos se basa en una estructura en forma de pares clave/valor, como en el objeto Session. As, la sintaxis para almacenar objetos en el estado de la aplicacin y recuperarlos es: Application[CadenaClave]=objeto; objeto=Application[CadenaClave];

- 116 -

RECUERDE

-

En ASP.NET disponemos del fichero GLOBAL.ASAX, de propsito similar al GLOBAL.ASA de ASP. Se encuentra situado en el directorio raz de nuestro Servidor Web o de nuestro directorio virtual, y se ejecuta al iniciarse nuestra aplicacin Web.

-

Presenta un formato similar al de las pginas ASP.NET En l incluiremos el cdigo para el tratamiento de los eventos Application_OnStart, Application_OnEnd, Session_OnStart, Session_OnEnd y Application_OnDisposed y el cdigo de inicializacin de objetos con mbito de Sesin y Aplicacin.

-

- 117 -

Tema 10

WEB.CONFIG

EL ARCHIVO

10.1. FORMATO DE LOS FICHEROS DE CONFIGURACIN ________ 122 10.2. CONFIGURACIN GENERAL ___________________________ 123 10.3. CONFIGURACIN DE LA PGINA _______________________ 124 10.4. CONFIGURACIN DE LA SESIN________________________ 125

- 119 -

En las versiones anteriores de ASP, la configuracin de las aplicaciones Web se realizaba a travs del Administrador de servicios de Internet, y la informacin relativa a la configuracin de las aplicaciones ASP se almacenaba en el repositorio binario denominado metabase del Internet Information Server. Este sistema de configuracin de las aplicaciones Web basado en el servidor Web IIS ya no es vlido para las aplicaciones ASP.NET. La configuracin de las aplicaciones ASP.NET se basa en ficheros XML, es decir, se utilizan ficheros XML de configuracin. Este nuevo sistema presenta las siguientes ventajas: Valores de configuracin en formato reconocible. Podemos abrir el fichero XML y leer y modificar los valores de configuracin que contiene. Actualizaciones inmediatas. Los cambios en los ficheros de configuracin se toman de forma inmediata y automtica en el sistema sin necesidad de reiniciar el Servidor Web o para los servicios. Portabilidad de las configuraciones. Para tener una aplicacin ASP.NET en un servidor con la misma configuracin que otra aplicacin distinta, nicamente es necesario copiar los ficheros XML de configuracin a la aplicacin correspondiente. Bloqueo de valores de configuracin. Es posible bloquear los valores de configuracin que no deban ser sobrescritos. Existen dos tipos de ficheros de configuracin: Configuracin del servidor. Esta configuracin se almacena en un fichero denominado machine.config, se encuentra en el directorio [WinNT]\Microsoft.NET\ Framework\[version] \config. Este fichero representa la configuracin por defecto de todas las aplicaciones ASP.NET existentes en el servidor. Configuracin de la aplicacin. La infomacin de configuracin relativa y especfica a una aplicacin ASP.NET se encuentra en el fichero web.config de su directorio raz. Puede haber otros ficheros web.config dentro de una misma aplicacin, en otros directorios ms anidados. La configuracin del fichero web.config sobrescribe los valores especificados en el

- 121 -

fichero machine.config, y a su vez, cada fichero web.config sobrescribir los valores de configuracin utilizados en los ficheros web.config de directorios superiores (a no ser que dichos valores se hayan bloqueado para evitar ser sobrescritos).

10.1. FORMATO DE LOS FICHEROS DE CONFIGURACIN Los dos ficheros de configuracin para una aplicacin ASP.NET, machine.config y web.config, se diferencian nicamente en el nombre (adems de su localizacin como hemos visto), ya que internamente presentan el mismo formato XML. Debemos tener en cuenta que el sistema de configuracin de ASP.NET distingue entre maysuculas y minsculas. Cada fichero de configuracin contiene una jerarqua anidada de etiquetas y subetiquetas XML con atributos que especifican los valores de configuracin. Las etiquetas deben encontrarse bien construidas, y siguen el siguiente criterio: Los nombres de etiquetas y atributos comienzan con letra minscula y las primeras letras de cada una de las siguientes palabras que forman el nombre van en mayscula. Los valores de los atributos de las etiquetas comienzan siempre por mayscula y las primeras letras de cada una de las siguientes palabras que la formen van tambin en mayscula. Existe una excepcin, los valores true y false se escriben con todas las letras en minsculas. Dentro de los ficheros de configuracin, el elemento raz es siempre la etiqueta . Dentro de este elemento, entre sus etiquetas de comienzo y fin, aparecern las distintas secciones de configuracin para aplicar a la aplicacin ASP.NET:

- 122 -

A continuacin veremos las secciones principales y ms comunes en la configuracin de una aplicacin ASP.NET. En los prximos captulos 11 (Mdulos y manejadores HTTP) y 12 (Seguridad en ASP.NET) seguiremos tratando estos ficheros, ya que estos temas dependen de la configuracin de otras de sus secciones.

10.2. CONFIGURACIN GENERAL Esta seccin se encuentra en la etiqueta . En ella podemos indicar una serie de parmetros de configuracin genricos para la aplicacin ASP.NET. Los atributos que contiene esta etiqueta son: executionTimeout: en este atributo indicaremos el tiempo de espera en segundos que se aplicar a la ejecucin de un recurso solicitado. Si se supera este tiempo de espera, la aplicacin ASP.NET finalizar la ejecucin del recurso. El valor por defecto que presenta este atributo es de 90 segundos. maxRequestLength: este atributo indica el tamao mximo de una peticin. Se expresa en KB, y por defecto presenta el valor de 4096 KB. userFullyAQualifiedRedirectUrl: indica cmo se le va a devolver una URL al cliente, completa o relativa. Puede tomar los valores true o false, por defecto tiene el valor false, por lo se enviar una ruta relativa. El cdigo siguiente muestra los valores que presenta por defecto esta seccin en el fichero machine.config (y que sern aplicables a todas las aplicaciones ASP.NET del servidor, si no son sobrescritos en algn fichero web.config de la aplicacin correspondiente): 10.3. CONFIGURACIN DE LA PGINA Aqu veremos la etiqueta , donde podemos controlar algunos de los comportamientos de las pginas ASP.NET. Veamos sus principales atributos: autoEventWireup: este atributo indica si los eventos de la pgina (Load, Init, UnLoad, etc, los vimos en el captulo 5) se van a lanzar de forma automtica. Puede tomar los valores true o false, por defecto tiene el valor true, por lo que estos eventos de la clase Page (que representa una pgina ASP.NET), se lanzarn automticamente. buffer: este atributo se utiliza para activar o desactivar el bfer de las pginas ASP.NET de la aplicacin actual. Puede tomar los valores true o false. Por defecto tiene el valor true, con lo que ASP.NET ejecuta por completo las pginas antes de enviar algo del resultado al usuario (el contenido del bfer no es enviado al navegador hasta que no se haya terminado de ejecutar la pgina). enableSessionState: este atributo permite activar o desactivar el estado de sesin, a travs del objeto Sessin que vimos (permite almacenar informacin comn a la sesin actual del usuario en la aplicacin Web). Puede tomar los valores true, false o readOnly (con este valor, las pginas podrn leer variables de sesin pero no modificarlas ni crear nuevas variables). Por defecto tiene el valor true. enableViewState: con este atributo podemos activar o desactivar el mantenimiento automtico de los valores de los controles Web dentro de los formularios Web (este tema lo tratamos en el captulo 5). Por defecto tiene el valor true, por lo que los controles Web mantienen su estado entre distintas recargas del formulario Web. Estos atributos se corresponden con los atributos del mismo nombre de la directiva @Page (descrita en el captulo 7), por lo que podemos sobrescribir estos valores de configuracin de la aplicacin para una pgina ASP.NET en concreto, usando en ella esta directiva.

- 124 -

Un ejemplo de uso de la etiqueta en un fichero de configuracin podra ser: Si en el fichero web.config de una aplicacin concreta deseamos sobrescribir alguno de los valores anteriores, por ejemplo, el uso del buffer, slo tenemos que incluir la etiqueta con el atributo a sobrescribir:

10.4. CONFIGURACIN DE LA SESIN Podemos configurar el estado de sesin mediante la etiqueta . Sus atributos ms comunes son: cookieless: este atributo indica si el objeto Session utilizar el mecanismo de cookies para almacenar el identificador de sesin. Puede tomar los valores true o false. Por defecto tiene el valor false, por lo que ASP.NET se apoyar en las cookies para manterner la sesin. Cuando tiene el valor true, la sesin se mantiene a travs del mecanismo de URLs (el identificador de la sesin se aade a la ruta de las pginas ASP.NET solicitadas). Timeout: este atributo indica el intervalo de tiempo en minutos de inactividad para el objeto Session. Esta inactividad significa que si el usuario no actualiza o solicita una pgina

- 125 -

durante ese tiempo, la sesin termina. Por defecto presenta el valor de 20 minutos. Tambin podemos modificar este valor en la aplicacin a travs de la propiedad Timeout del objeto Session. Por ejemplo, para aumentar el timeout de la sesin hasta 30 minutos y evitar el uso de cookies para mantener la sesin, tendramos la siguiente configuracin:

- 126 -

RECUERDE

-

La configuracin de las aplicaciones ASP.NET se basa en los ficheros XML machine.config y web.config.

-

Estos ficheros de configuracin contienen una jerarqua anidada de etiquetas y subetiquetas XML con atributos que especifican los valores de configuracin. Se distingue entre maysculas y minsculas.

-

Los cambios en los ficheros de configuracin se toman de forma inmediata y automtica en el sistema sin necesidad de reiniciar el Servidor Web o para los servicios.

-

Podemos configurar el tiempo de ejecucin de un recurso, el timeout de la sesin, el uso de cookies para mantener la sesin, activar el uso del buffer, el mantenimiento automtico del estado de los controles Web, etc.

- 127 -

Tema 11

MANEJADORES http

MDULOS Y

11.1. EJEMPLO DE MANEJADOR http___________________________ 132

- 129 -

Los mdulos HTTP son los responsables de filtrar cada solicitud/respuesta en una aplicacin ASP.NET, por ejemplo, son quienes determinarn si una solicitud determinada debera ser servida al cliente desde la cach, o bien ser dirigida al manejador HTTP correspondiente. Esta seccin se encuentra en la etiqueta de los ficheros de configuracin web.config o machine.config. Los manejadores HTTP son los encargados de servir las peticiones de una extensin particular dentro de ASP.NET, como puede ser la extensin de las pginas .aspx. Se encuentran en la seccin de los ficheros de configuracin XML. Dentro de esta seccin podemos aadir manejadores personalizados o bien eliminar manejadores existentes. Esto es posible porque ASP.NET se basa en una arquitectura ampliable, que es denominada entorno de ejecucin HTTP. En el fichero machine.config se indican una serie de manejadores HTTP, los bsicos para ASP.NET, que tomarn todas las aplicaciones del servidor Web, a no ser que se sobrescriban en algn web.config de la aplicacin. Los ms comunes que podemos encontrar son los manejadores para pginas ASP.NET (extensin .aspx), para controles de usuario (extensin .ascx) y ficheros de configuracin (extensin .config). Para indicar estos manejadores, usaremos la subetiqueta de la etiqueta . Esta etiqueta tiene los siguientes atributos: verb: este atributo contiene el tipo de verbo HTTP correspondiente al manejador que va a procesar la peticin. Estos valores pueden ser Get, Head, Post, etc y tambin el carcter asterisco (*) para indicar que el manejador tratar todos los verbos o acciones del protocolo HTTP. path: en este atributo indicamos la ruta del recurso que se debe tratar. Tambin acepta el carcter especial de asterisco, que generalmente se utiliza seguido de la extensin de los ficheros a tratar. type: este atributo contiene el nombre de la clase que implementa el manejador HTTP.

- 131 -

11.1. EJEMPLO DE MANEJADOR HTTP Podemos aadir nuestros propios manejadores incluyendo una nueva etiqueta en la seccin de los manejadores HTTP, que haga referencia a la clase que implementa nuestro manejador. Esta clase, que realizar las funciones de un manejador HTTP, debe implementar el interfaz System.Web.IHttpHandler. Este interfaz contiene el mtodo ProcessRequest(), que ser el mtodo responsable de procesar la solicitud que se ha asociado con el manejador. Tambin es necesario implementar la propiedad IsReusable, de slo lectura, y que simplemente devuelve el valor true. En el ejemplo que vamos a ver, el mtodo ProcessRequest() generar cdigo HTML sencillo, que presentar una cadena de texto con un saludo y el parmetro que se ha pasado a la pgina (recuperaremos este valor mediante la coleccin QueryString del objeto Request asociado al contexto de la pgina asociada al manejador). using System; using System.Web; namespace Componentes.Pruebas { public class miManejador:IHttpHandler { public void ProcessRequest (HttpContext entorno) { HttpRequest solicitud=entorno.Request; HttpResponse respuesta=entorno.Response; respuesta.Write(); respuesta.Write (Saludos + solicitud.QueryString[nombre] ); respuesta.Write(); } public bool IsReusable { get { return true; } } } }

- 132 -

Una vez compilada la clase y generado el assembly correspondiente, debemos copiar el assembly (librera) al directorio BIN de la aplicacin, donde se encuentran las DLL disponibles en esa aplicacin. El cdigo que aparecera en el fichero web.config sera: En este ejemplo, la clase del manejador es miManejador, que se encuentra en el espacio de nombres Componentes.Pruebas, y el assembly es Componente.dll. Si solicitamos la pgina pruebaManejador.aspx, sera la clase del manejador (miManejador) la que atendera la solicitud, y mostrara una pgina con el mensaje Saludos Luis, por ejemplo.

- 133 -

RECUERDE

-

Los mdulos HTTP son los responsables de filtrar cada solicitud/respuesta en una aplicacin ASP.NET. Se indican en la etiqueta de los ficheros de configuracin XML.

-

Los manejadores HTTP son los encargados de servir las peticiones de una extensin particular dentro de ASP.NET, como puede ser la extensin de las pginas .aspx. Se encuentran en la seccin de los ficheros de configuracin XML.

-

Podemos aadir nuestros propios manejadores incluyendo una nueva etiqueta en la seccin de los manejadores HTTP, que haga referencia a la clase que implementa nuestro manejador.

-

La clase del manejador HTTP debe implementar la propiedad IsReusable y el mtodo ProcessRequest() del interfaz System.Web.IHttpHandler.

- 134 -

Tema 12

SEGURIDAD ENASP.NET

12.1. BLOQUEAR VALORES DE CONFIGURACIN ______________ 137 12.2. AUTENTIFICACIN Y AUTORIZACIN ____________________ 137 12.3. AUTENTIFICACIN BASADA EN FORMULARIOS ___________ 138 12.4. AUTORIZACIN DE USUARIOS _________________________ 140

- 135 -

ASP.NET configura de manera automtica el servidor Web IIS para que no sea posible que un cliente realice una peticin directa a un fichero global.asax o web.config, y que de esta forma pueda ver el cdigo de inicializacin o la configuracin de nuestra aplicacin. Esto puede resultar muy peligroso porque podemos dejar ver la estructura de directorios que tenemos, dar idea de la ubicacin de archivos confidenciales, opciones de compilacin, de los manejadores HTTP responsables de tratar cada peticin, usuarios autenticados en la aplicacin, poltica de seguridad seguida, etc. As, si un usuario indica en la ruta de su navegador algo parecido a http://localhost/aplicacionWeb/ web.config o http://localhost/aplicacionWeb/global.asax, se le mostrar un mensaje de acceso denegado.

12.1. BLOQUEAR VALORES DE CONFIGURACIN Es posible bloquear valores en el fichero machine.config para que no exista la posibilidad de que sean sobrescritos en los ficheros web.config de las aplicaciones ASP.NET particulares. Para ello, debemos incluir el atributo allowOverride=false en la etiqueta correspondiente para indicar que no se permita la sobrescritura de los valores de configuracin. Si intentamos sobrescribir el valor de configuracin, se producir una excepcin.

12.2. AUTENTICACIN Y AUTORIZACIN Es importante tener la capacidad de identificar usuarios y controlar el acceso a los recursos en nuestras aplicaciones Web. La autenticacin es el acto de determinar la identidad del usuario solicitante. Por lo general, el usuario deber identificarse, normalmente, presentando su nombre de usuario y contrasea, para ser autenticado. Una vez autenticado, debe determinarse si esa identidad puede tener acceso a un recurso especfico. Este proceso se conoce como autorizacin. ASP.NET proporciona dos tipos de servicios de autorizacin: Comprobaciones de permisos sobre un recurso para determinar si la cuenta de usuario autenticada puede obtener acceso a los recursos. Estos permisos se configuran para un

- 137 -

determinado archivo o directorio mediante la ficha Seguridad de la pgina de propiedades del Explorador. Autorizacin de URL, que autoriza a una identidad el acceso a partes del espacio Web.

A continuacin, vamos a ver la autenticacin basada en formularios que proporciona ASP.NET:

12.3. AUTENTICACIN BASADA EN FORMULARIOS La autenticacin basada en formularios es un servicio de autenticacin de ASP.NET que permite a las aplicaciones suministrar su propia interfaz de inicio de sesin y hacer su propia verificacin de identidad del usuario. ASP.NET permite autenticar usuarios y desviar a los usuarios no autenticados hacia una pgina de inicio de sesin, adems de realizar todas las tareas de administracin de cookies sobre las que se apoya el mecanismo de autenticacin. Para que una aplicacin pueda utilizar autenticacin basada en formularios, debemos configurar la etiqueta con la opcin Forms y denegar el acceso a los usuarios annimos. Para ello, nuestro web.config debera presentar una configuracin como sta: Podemos configurar el nombre de la cookie a usar, el tipo de proteccin, la direccin URL para la pgina de inicio de sesin, el tiempo de validez de la cookie y la ruta de acceso que se debe utilizar para la cookie suministrada. Estos datos se indican en los distintos atributos de la etiqueta , que es un subelemento de la etiqueta . - 138 -

Los atributos de la etiqueta son:

-

loginUrl: URL de la pgina de inicio de sesin a la que se desvan los usuarios para autentificarse.

-

name: este atributo indica el nombre de la cookie que se va a utilizar para el mecanismo de autenticacin.

-

timeout: este atributo indica el tiempo, en minutos, de permanencia de la cookie. Pasado este tiempo, la cookie caduca. El valor predeterminado es 30 minutos.

-

path: aqu se indica la ruta de acceso para la cookie. protection: este atributo indica el mtodo utilizado para proteger los datos de la cookie. Dejaremos el valor all que es el predeterminado y sugerido (se basa en el algoritmo Triple DES para su cifrado).

-

Las solicitudes no autenticadas se desvan a la pgina de inicio de sesin indicada (paginaLogin.aspx), la cual debe presentar un formulario que pida los datos de autenticacin del usuario (login y password). Despus de validar la identidad del usuario, se le vuelve a dirigir hacia la URL original solicitada. Podemos suministrar una lista de credenciales vlidas a travs de la etiqueta , que es una subetiqueta de la etiqueta . Dentro de , indicaremos en la etiqueta el nombre de usuario y contrasea vlidos para los usuarios autenticados.

- 139 -

Segn se indique en el atributo passwordFormat de la etiqueta , las contraseas se pueden almacenar en texto no cifrado (valor Clear ) o cifrado como cdigo de tipo SHA1 o MD5 (valor SHA1 o MD5). La aplicacin ASP.NET realizar una llamada al mtodo FormsAuthentication.Authenticate, con el nombre de usuario y contrasea, y se encargar de verificar que el usuario es un usuario vlido.

12.4. AUTORIZACIN DE USUARIOS En ASP.NET podemos permitir o denegar el acceso a grupos de usuarios. Para ello, utilizaremos las subetiquetas y de la etiqueta en nuestro fichero web.config. En este ejemplo, se concede acceso al usuario llamado usuario1, y se deniega el acceso a todos los dems usuarios. Cada elemento o debe contener un atributo users donde especificar al usuario al que se le da acceso o se le deniega. Podemos especificar varios usuarios en un nico elemento mediante una lista de valores separados por comas. Por ejemplo: Para indicar el mtodo HTTP utilizaremos el atributo Verb de las etiquetas y :

- 140 -

En esta configuracin, permitimos a usuario4 y usuario5 utilizar el mtodo POST de HTTP en los recursos solicitados, mientras que slo dejamos utilizar el mtodo GET de HTTP al resto de los usuarios. Existen dos nombres de usuario especiales que podemos usar en el atributo users: El carcter (*): significa todos los usuarios. El carcter (?): significa usuarios annimos (es decir, no autenticados).

Por ejemplo, podramos usar el carcter (?) para denegar el acceso a los usuarios no autentic