Está en la página 1de 146

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
INTRODUCCIN AL
Tema 1 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 -
REQUISITOS DEL
Tema 2 ASP.NET
(.NET FRAMEWORK)

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 -
CONCEPTOS DE LA
Tema 3 PROGRAMACIN
ORIENTADA A
OBJETOS

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 -
CREANDO UNA
Tema 4 PGINA
BSICA

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

<html>
<head>
<title>Mi primera pgina ASP.NET</title>
</head>
<body>
<script language=C# runat=server>
void pulsado (Object origen, EventArgs args) {
etiqueta.Style[font-size]=20;
etiqueta.Text=Hola Mundo!;
}
</script>
<form id=formulario runat=server method=post>
<asp:label id=etiqueta runat=server></asp:label>
<asp:button id=boton runat=server onclick=pulsado text=Plsame></asp:button>
</form>
</body>
</html>

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 <script>, 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 <asp:button>).

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
<asp:label id=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 <script>, 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 event new struct


as explicit null switch
base extern object this
bool false operator throw
break finally out true
byte fixed override try
case float params typeof
catch for private uint
char foreach protected ulong
checked goto public unchecked
class if readonly unsafe
const implicit ref ushort
continue in return using
decimal int sbyte virtual
default interface sealed volatile
delegate internal short while
do is sizeof
double lock stackalloc
else long static
enum namespace string

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:

<script language=C# runat=server>


string cadena;
int num_aleatorio;
public DateTime fechaActual;
</script>

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:

<%@ Page language=C# %>


<html>
<body>
<%
string color1= rojo;
string color2= azul;
if ( color1.Equals(color2) ) {
Response.Write (Los colores son iguales);
}else {
Response.Write (Los colores son distintos);
}
%>
</body>
</html>

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:

<%@ Page language=C# %>


<html>
<body>
<%
int respuesta = 3;
switch (respuesta) {
case 1:
Response.Write (Ha elegido la respuesta 1);
break;
case 2:
Response.Write (Ha elegido la respuesta 2);
break;
case 3:
Response.Write (Ha elegido la respuesta 3);
break;
default:
Response.Write (Debe elegir una de estas respuestas: 1, 2, 3);
break;
}
%>
</body>
</html>

- 39 -
4.6. BUCLES

4.6.1. Bucle do .. while

do {
cdigo
} while (expresin)

Ejemplo de su uso:

<%
int contador= 7;
do {
Response.Write (Quedan + contador + segundos para el final<br>);
contador = contador 1;
} while (contador > 0);
%>

4.6.2. Bucle while

while (expresin) {
cdigo
}

Ejemplo de su uso:

<%
int contador= 0;
while (contador <= 10) {
Response.Write ( contador + <br>);
contador++;
}
%>

- 40 -
4.6.3. Bucle for

for (inicializacin; expresin; iteradores) {


cdigo
}

Ejemplo de su uso:

<%
for (int i=0; i<=10; i++) {
Response.Write ( i + <br>);
}
%>

4.6.4. Bucle foreach .. in

foreach (tipo identificador in expresin) {


cdigo
}

Este bucle suele utilizarse para recorrer los elementos de un array o de una coleccin, y por tanto, la
expresin en este bucle ser el nombre de un array o coleccin.

Ejemplo de su uso:

<%
string [] colores = {rojo,azul,negro,naranja,blanco };
foreach (string color in colores) {
Response.Write ( color + <br>);
}
%>

- 41 -
4.7. OPERADORES

En este apartado veremos los principales operadores del lenguaje C#, algunos de los cuales ya hemos
usado en los ejemplos anteriores para formar sentencias o expresiones condicionales.

4.7.1. Operadores aritmticos

+ Suma.
- Resta.
* Multiplicacin.
/ Divisin.
% Mdulo (resto de la divisin).
++ Operador de incremento.
-- Operador de decremento.

4.7.2. Operadores lgicos

& Devuelve true si las dos expresiones son verdaderas.


| Devuelve true si una de las dos expresiones es verdadera.
^ Devuelve true si slo una de las expresiones es verdadera.
Cambia una expresin de verdadera a falsa y viceversa.
&& Similar a &, pero en el caso de que no se cumpla alguna expresin, el resto de las
comparaciones (tomndolas de izquierda a derecha) no se evaluarn y devolver false.
| | Similar a |, pero en el caso de que se cumpla alguna expresin, el resto de las
comparaciones (tomndolas de izquierda a derecha) no se evaluarn y devolver true.
true Literal y operador que devuelve el valor booleano de verdadero.
false Literal y operador que devuelve el valor booleano de falso.

- 42 -
4.7.3. Operadores de asignacin

= Operador bsico de asignacin.


^= Operador de potencia.
*= Operador de multiplicacin.
/= Operador de divisin.
+= Operador de suma.
-= Operador de resta.
&= Operador de concatenacin de cadenas.
%= Operador de mdulo.

4.7.4. Operadores de comparacin

== Igual que.
= Distinto que.
> Mayor que.
< Menor que.
>= Mayor o igual que.
<= Menor o igual que.

4.7.5. Operador de concatenacin

Este operador sirve para unir dos cadenas de texto (tipo string) en una sola, y es el operador ms (+).

4.7.6. Otros operadores

. Acceso a miembros de objetos (propiedades y mtodos).


[] Operador de ndice, para acceder a los distintos elementos de un array.
?: Realiza una operacin condicional en una sola lnea. Su formato es:
expresion? Caso-si-verdadero : caso-si-falso
is Para ver si un objeto es de un determinado tipo (o es compatible con dicho tipo
debido a la herencia).
sizeof Devuelve el tamao en bytes de un tipo de datos.
typeof Devuelve el tipo de un objeto.

- 43 -
4.8. MANEJADORES DE EVENTOS

Estos son mtodos especiales que se encargan del tratamiento de eventos en el cliente (por ejemplo,
pulsar un botn o cambiar la opcin de un desplegable), pero que ejecutarn cdigo de servidor.

Estos mtodos para el tratamiento de eventos poseen parmetros (recordemos el mtodo pulsado de
nuestra primera pgina ASP.NET, que mostraba el mensaje Hola mundo al hacer click sobre el botn
plsame, al comienzo de este captulo). El primero de estos parmetros es el control que gener el
evento (en dicho ejemplo, el botn plsame), y el segundo parmetro sern los argumentos adicionales
que necesite el mtodo, y que normalmente dependern del tipo de evento a tratar.

La sintaxis general de un mtodo para el tratamiento de eventos es la siguiente:

void NombreMtodo (Object origen, EventArgs argumentos) {


cdigo de tratamiento del evento
}

Veremos con ms detalle este tipo de mtodos en el captulo siguiente, en el que trataremos los Web
Forms y los controles de ASP.NET.

4.9. TRATAMIENTO DE ERRORES

C# dispone de una serie de sentencias y mecanismos orientados a capturar los errores o situaciones
anmalas que puedan ocurrir dentro de nuestros programas, para poder tratarlos de forma adecuada.

Este tratamiento se conoce como gestin estructurada de excepciones, que manejamos con las
siguientes palabras reservadas:

- try: Con esta palabra clave definimos la zona de nuestro cdigo que va a ser inspeccionada
y tratada bajo la gestin estructurada de excepciones.

- catch: Con esta palabra clave definimos el cdigo que debe ejecutarse cuando se produce
la excepcin o situacin anmala. Podemos tener mltiples catch para un solo try, se

- 44 -
ejecutar aquel catch que tenga el tipo de excepcin u error que se haya producido en la
zona del try para esa ejecucin.

- finally: Esta palabra clave define el cdigo que se ejecutar siempre despus de ejecutar
un cdigo dentro de una sentencia try, es decir, el cdigo que pongamos en este bloque, se
ejecutar siempre, independientemente de si se ha producido o no una excepcin.

- throw: Esta sentencia se utiliza para lanzar una excepcin, debe ir seguida de un objeto
que representa la excepcin que se ha producido (debe ser un objeto que hereda de la clase
System.Exception). Lanzar la excepcin significa que dicho error puede propagarse y ser
tratado en otro punto de la secuencia de llamadas a mtodos.

La sintaxis de un bloque try-catch-finally es la siguiente:

try {
cdigo a inspeccionar
} catch (tipo de excepcin variable) {
tratamiento de esta excepcin
} catch (tipo de excepcin variable) {
tratamiento de esta excepcin
}
[ ... ]
finally {
cdigo que siempre se ejecutar, se produzca o no una excepcin en el bloque try
}

Veamos un ejemplo. En el siguiente cdigo se intenta realizar una operacin matemtica de divisin de
un nmero por cero, lo que dentro del entorno de ejecucin causar una excepcin del tipo
System.DivideByZeroException, que deriva directamente de la clase System.Exception, y que nos
encargaremos de capturar de forma adecuada mediante una sentencia catch para presentar al usuario
un mensaje de error controlado.

<%@ Page language=C# %>


<html>

- 45 -
<body>
<%
int numero1 = 50;
int numero2 = 0;
int resultado;
try {
resultado = numero1 / numero2;
}catch ( System.DivideByZeroException error ) {
Response.Write (Se ha producido un error. No se puede dividir por cero.
Excepcion: + error.Message);
}
%>
</body>
</html>

4.10. DEFINICIN DE CLASES

La sintaxis general para declarar una clase en C# es:

using Namespace;
namespace NombreDeEspacio {
modificadores class NombreDeClase : ClasePadre {
implementacin de la clase
}
}

Incluiremos una sentencia using por cada uno de los espacios con nombre (NameSpace) que
necesitemos. Un namespace es una forma de clasificar y organizar clases, para evitar conflictos de
nombres (podemos tener clases con igual nombre en distintos namespaces). Cada namespace contiene
un conjunto de clases relacionadas (como una librera).

Podemos definir nuestra clase dentro de un Namespace, para ello utilizaremos la palabra clave
namespace seguida del nombre que le damos a nuestro espacio con nombre.

- 46 -
Entre las llaves del Namespace incluimos la declaracin de la clase. En esta declaracin aparecen los
modificadores de la clase (veremos lo modificadores en el siguiente apartado, sirven para definir las
caractersticas de nuestra clase), la palabra reservada class y el nombre que hemos elegido para la clase
que estamos definiendo.

Si nuestra clase hereda de una clase padre (superclase), lo indicaremos poniendo los dos puntos ( : ) y a
continuacin, el nombre de la clase de la que heredamos. Despus, entre las dos llaves escribimos la
implementacin de la clase, donde definimos sus propiedades y mtodos.

4.11. INSTANCIACIN DE CLASES

Para crear una nueva instancia de una clase (nuestra o de las proporcionadas por el entorno), utilizamos
el operador new. Este operador informa al sistema de que queremos crear un nuevo objeto y asignarlo a
un nombre de objeto que elegimos. Cuando se utiliza este operador, el sistema llama automticamente al
constructor de la clase, donde se inicializan las propiedades de la actual instancia (objeto) que estamos
creando.

Su sintaxis es la siguiente:

Clase nombre_objeto = new Clase ( );

El operador new se utiliza para crear nuevos objetos, no para tipos bsicos como int, long, bool, char, etc.
Para los tipos bsicos es suficiente una declaracin indicando el tipo de la variable, seguido del nombre
dado a la variable, por ejemplo:
int numero;
string cadena=Hola mundo;

El CLR de Microsoft .NET cuenta con un recolector de basura que se encarga de liberar automticamente
todos los objetos creados mediante el operador new cuando detecta que el objeto deja de ser utilizado.

Veamos un ejemplo de clases. Vamos a utilizar dos archivos distintos. Por un lado, el archivo
vehiculo.cs que contiene una clase denominada vehiculo, dentro del espacio de nombres
aplicacionWeb y, por otro lado, la pgina ASP.NET pagina.aspx.

- 47 -
Esta tcnica de separacin de cdigo es muy utilizada en la plataforma ASP.NET (se denomina Code-
Behind, cdigo por detrs o cdigo oculto), consiste en separar la interfaz de usuario de la lgica de la
aplicacin. La lgica se encuentra en el archivo .cs (la definicin de la clase), y la interfaz de usuario (la
presentacin de la aplicacin) en el archivo .aspx.

Archivo vehiculo.cs

using System;
namespace aplicacionWeb {
public class vehiculo {
private int n_puertas = 0;
private string marca = ;
public vehiculo (int num_puertas, string nombre_marca) {
n_puertas = num_puertas;
marca = nombre_marca;
}
public string getMarca( ) {
return marca;
}
public int getNumeroPuertas( ) {
return n_puertas;
}
}
}

- 48 -
Editando el cdigo del archivo vehculo.cs en Visual Studio .NET

Archivo pagina.aspx

<%@ Page language=c# %>


<%@ Assembly src=vehiculo.cs %>
<%@ import namespace=aplicacionWeb %>
<html>
<head>
<title> Ejemplo de clases </title>
</head>
<body>
<%
vehiculo coche1 = new vehiculo(5,Renault);
%>
La marca del coche es:
<% =coche1.getMarca() %>

- 49 -
<br>
El nmero de puertas es:
<% =coche1.getNumeroPuertas() %>
</body>
</html>

Editando el cdigo del archivo pagina.aspx en Visual Studio .NET

La directiva Assembly indica la localizacin del cdigo fuente (en el archivo vehiculo.cs), y la directiva
import especifica el espacio de nombres utilizado.

En este ejemplo, creamos una nueva instancia de la clase vehiculo mediante el operador new. Lo
inicializamos con 5 puertas y marca Renault (valor para sus propiedades), y una vez que ya tenemos
creado nuestro objeto, podemos acceder a sus mtodos miembro disponibles (getMarca y
getNumeroPuertas).

- 50 -
Resultado de la ejecucin de nuestro ejemplo de clases

4.12. MODIFICADORES

Los modificadores son palabras clave cuya funcin es especificar el mbito o cualidades de nuestras
clases, objetos, variables o mtodos.

4.12.1. Modificadores de acceso

Estos modificadores se encargan de especificar el nivel de accesibilidad de los miembros de las clases
(propiedades y mtodos). Disponemos de los siguientes:

- public: Informa al entorno de que la propiedad o mtodo es accesible desde cualquier clase
o parte del programa. Este modificador otorga el mximo nivel de accesibilidad.

- private: Con este modificador informamos al sistema de que la propiedad o mtodo


nicamente es accesible desde los mtodos internos de la misma clase (es decir, slo
podemos acceder a un miembro private desde la propia clase, no desde otras clases, ni
siquiera desde las subclases que hereden de la clase que contiene los miembros private).

- 51 -
- protected: Los miembros protected son accesibles desde la propia clase donde se
encuentran, y desde las clases derivadas de ella.

- internal: Los miembros que llevan este modificador slo son accesibles desde los archivos
del mismo proyecto.

4.12.2. Otros modificadores

El lenguaje C# dispone de otra serie de modificadores, aplicables a clases o miembros de clase:

- abstract: Las clases abstractas son aquellas que no tienen la implementacin de todos sus
mtodos, sino que contienen algn mtodo no implementado. Las clases abstractas no
pueden ser instanciadas directamente (mediante el operador new), sino que sirven como
clase base a otras clases, donde se proporcionar la implementacin de esos mtodos no
implementados.

- const: Este modificador indica que la propiedad de clase o variable es una constante, es
decir, tiene carcter de slo lectura, y su valor no puede modificarse.

- extern: Este modificador se aplica a un mtodo, e indica que la implementacin de dicho


mtodo es realizada de forma externa, mediante la inclusin de alguna librera externa a
.NET Framework.

- readonly: Este modificador marca a una propiedad como de slo lectura (pero puede
inicializarse dentro de un constructor de dicha clase).

- sealed: Es aplicable exclusivamente a las clases, y significa que la clase no se puede


heredar.

- static: Este modificador indica que la propiedad o mtodo de una clase pertenece al propio
tipo o clase, es decir, el elemento static no se crea por cada instancia de la clase. Podemos
acceder a los miembros estticos a travs de su clase, sin tener que crear un nuevo objeto
de esa clase.

- 52 -
- virtual: Este modificador marca a un mtodo para que las clases derivadas puedan
implementarlo.

- override: Se utiliza para generar una nueva implementacin de una funcin virtual de una
clase. Aparece en las clases derivadas de una clase base (abstracta) para implementar
funcionalidad especfica a dichas clases derivadas.

- 53 -
RECUERDE

- C# es uno de los lenguajes ms utilizados en la plataforma .NET.

- Es un lenguaje orientado a objetos, que permite aplicar los mecanismos propios de la POO, como
derivacin, abstraccin o encapsulamiento.

- Su sintaxis es bastante similar a C++ o Java.

- Distingue entre maysculas y minsculas.

- Cuenta con las estructuras tpicas (sentencias condicionales, bucles, operadores, modificadores, etc).

- Permite una gestin estructurada de excepciones, con la que controlar los errores o las situaciones
anmalas que puedan ocurrir durante la ejecucin de nuestra aplicacin.

- Permite separar la interfaz de usuario de la lgica de la aplicacin (tcnica Code-Behind).

- 54 -
Tema 5 CONCEPTOS DE
WEB FORMS

5.1. LA CLASE PAGE _______________________________________ 57


5.1.1. Eventos de la pgina _____________________________ 57
5.1.2. Propiedades de la clase Page ______________________ 59
5.1.3. Mtodos de la clase Page __________________________ 61
5.2. WEB FORMS __________________________________________ 61
5.3. INTRODUCCIN A LOS CONTROLES DE SERVIDOR DE ASP.NET 63
5.4. INTRODUCCIN A LOS CONTROLES HTML _________________ 64
5.5. EJEMPLOS CON CONTROLES HTML ______________________ 66
5.6. INTRODUCCIN A LOS CONTROLES WEB __________________ 71
5.7. EJEMPLOS CON CONTROLES WEB _______________________ 74

- 55 -
En este captulo veremos una introduccin a los controles Web que pueden utilizarse en un Web Form
(formulario ASP.NET). Estos controles los incluiremos en una pgina ASP.NET, por lo que antes vamos a
ver la clase Page, ya que podemos representar a la pgina ASP.NET actual como un objeto de esta
clase.

5.1. LA CLASE PAGE

Cada vez que pedimos una pgina ASP.NET a un servidor Web, es decir, un cliente a travs de un
navegador Web solicita una URL que indica un fichero .ASPX en el servidor, se crean una serie de
componentes que constituyen la pgina solicitada y que se compilan en una unidad. Estos componentes
pueden ser: el fichero .ASPX solicitado, los controles de la pgina, las clases que contiene el cdigo de la
pgina, etc.

Los distintos componentes compilados dan lugar a un objeto de la clase


Object.Control.TemplateControl.Page. Esta clase se crea de forma dinmica, y se instanciar cada vez
que se realice una peticin del fichero .ASPX.

Dentro del cdigo de una pgina siempre vamos a tener acceso a la clase Page, ya que podemos decir
que el objeto instancia de esta clase Page, representa a la pgina ASP.NET actual. Este objeto nos sirve
como contenedor de todos los componentes que constituyen la pgina, y nos permite acceder a sus
propiedades, mtodos y eventos.

A continuacin, vamos a comentar los principales eventos, propiedades y mtodos que nos ofrece la
clase Page:

5.1.1. Eventos de la pgina

ASP.NET nos ofrece una serie de eventos que nos permiten estructurar el cdigo en las pginas. Estos
eventos no existan en la versin anterior de ASP.

Los eventos se producen en un orden determinado a lo largo de la carga de la pgina:

- Init: este evento es lanzado cuando la pgina es inicializada. En ese momento, todava no
se han creado por completo los distintos controles de la pgina. Este evento es tratado en el
mtodo Page_Init.

- 57 -
- Load: este evento se lanza a continuacin del mtodo Init y tiene lugar cuando la pgina se
ha cargado. En este momento, todos los controles de la pgina ya han sido creados. Este
evento se lanzar cada vez que la pgina es ejecutada. Este evento lo tratamos en el
mtodo Page_Load.

- PreRender: este evento tiene lugar justo antes de enviar la informacin al cliente. Siempre
es lanzado despus del evento Load. Lo tratamos en el mtodo Page_PreRender.

- UnLoad: este evento se lanzar en ltimo lugar, despus de haber tenido lugar todos los
anteriores. En este momento, la pgina ha finalizado de procesarse, se ha terminado la
ejecucin de la pgina y toda la informacin ha sido enviada al cliente. Este evento lo
tratamos en el mtodo Page_UnLoad

Veamos un sencillo ejemplo de uso de estos mtodos:

ejemploEventos.aspx

<html>
<head>
<title>Ejemplo de ejecucin de los eventos en una pgina ASP.NET</title>
</head>
<script language=C# runat=server>
void Page_Init (Object origen, EventArgs args) {
Page.Response.Write (Se ha lanzado el Evento Init<br>);
}
void Page_Load (Object origen, EventArgs args) {
Page.Response.Write (Se ha lanzado el Evento Load<br>);
}
void Page_PreRender (Object origen, EventArgs args) {
Page.Response.Write (Se ha lanzado el Evento PreRender<br>);
}
</script>
<body>
<form id=formulario runat=server method=post>

- 58 -
<asp:label id=etiqueta runat=server>Eventos de la pgina</asp:label>
</form>
</body>
</html>

Al ejecutar este ejemplo veremos una serie de mensajes que ilustran el orden de ejecucin de los
distintos eventos que tratamos:

5.1.2. Propiedades de la clase Page

Para acceder a una propiedad de la clase Page podemos indicar delante de la propiedad la clase Page o
utilizar la propiedad directamente, por ejemplo:

Page.Response.Write (Hola Mundo);


es equivalente a:
Response.Write (Hola Mundo);

- 59 -
Las propiedades principales de la clase Page son:

- Application: esta propiedad es una referencia a un objeto de la clase


System.Web.HttpApplicationState. Nos permite almacenar y acceder a informacin
compartida y comn a toda la aplicacin Web. Esta propiedad es equivalente al objeto
integrado Application de ASP 3.

- ClientTarget: es un objeto de la clase String, nos permite sobrescribir la deteccin


automtica de navegador Web ofrecida por ASP.NET.

- EnableViewState: propiedad de tipo Boolean, nos permite desactivar el mantenimiento del


estado entre distintas llamadas de los controles Web de la pgina. Por defecto, su valor es
true.

- IsPostBack: propiedad de tipo Boolean, devuelve true si la pgina actual ya ha sido enviada
al servidor en alguna ocasin. Si tiene el valor false significa que es la primera vez que se
carga la pgina. Este indicador nos servir para inicializar los controles Web y propiedades
de la pgina.

- Request: esta propiedad es una referencia a un objeto de la clase System.Web.HttpRequest


(es equivalente al antiguo objeto integrado Request del ASP 3). Esta propiedad nos permite
acceder a toda la informacin necesaria de la peticin del protocolo HTTP que ha sido
utilizada para solicitar la pgina del servidor Web.

- Response: esta propiedad es una referencia a un objeto de la clase


System.Web.HttpResponse (es equivalente al antiguo objeto integrado Response del ASP
3). Esta propiedad nos permite manipular la respuesta devuelta al cliente que ha realizado la
peticin de la pgina, es decir, este objeto representa la respuesta HTTP que se enva al
cliente.

- Server: este atributo es una referencia a un objeto de la clase System.Web.HttpServerUtility


(tiene la misma funcionalidad del antiguo objeto integrado Server del ASP 3). Entre sus
principales funcionalidades estaba la creacin de componentes existentes en el servidor. En
ASP.NET los objetos se crean de distinta manera, importamos el espacio de nombres

- 60 -
necesario (para tener acceso a todas sus clases) y a travs del operador new creamos
nuevas instancias de objetos.

- Session: esta propiedad es una referencia a un objeto de la clase


System.Web.SessionState.HttpSessionState. Nos permite almacenar informacin entre
diferentes pginas incluidas en una misma aplicacin ASP.NET para cada usuario. Esta
propiedad es equivalente al objeto integrado Session de ASP 3.

- User: esta propiedad devuelve informacin sobre el usuario que ha solicitado la pgina
ASP.NET.

5.1.3. Mtodos de la clase Page

Veamos una descripcin de algunos de los mtodos que nos ofrece la clase Page:

- FindControl: este mtodo realiza una bsqueda en la pgina del control Web cuyo nombre
se pasa como parmetro, y devuelve dicho control (si lo encuentra). El parmetro que recibe
es un objeto de la clase String que representa el nombre del control buscado, y el objeto
devuelto corresponde a la clase Control. Sobre este objeto debemos aplicar el casting al
control Web esperado para poder acceder a sus miembros.

- MapPath: este mtodo devuelve un objeto de la clase String que representa una ruta virtual
construida a partir de la ruta fsica que se le pasa como parmetro, que tambin es un objeto
de la clase String.

- ResolveUrl: mtodo que convierte una URL virtual, que le pasamos como parmetro, en
una URL absoluta.

5.2. WEB FORMS

Los Web Forms (formularios Web) son una caracterstica de ASP.NET que ofrece un nuevo modelo
programacin (no exista en versiones anteriores de ASP), y nos va a permitir generar contenidos
dinmicos de una forma ms sencilla.

- 61 -
Los Web Forms sustituyen a los formularios HTML dentro del entorno de programacin de ASP.NET. Es
un Web Form quien va a generar el cdigo HTML correspondiente al formulario que estamos diseando.
Permiten el tratamiento de los eventos del cliente con cdigo ASP.NET, es decir, con cdigo que ser
ejecutado en el servidor Web.

Este modelo de programacin ofrece algunas ventajas con respecto al modelo anterior de ASP:

- Ofrece un modelo de programacin ms visual (en el entorno Visual Studio .NET


podemos usar los distintos controles que nos suministran distintas paletas, y arrastrarlos y
soltarlos hasta la vista de diseo). Se ahorra tiempo de desarrollo en crear la interfaz de
usuario y adems podemos reutilizar estos controles que encapsulan su funcionalidad.

- El cdigo resultante es ms limpio en la pgina, ya que no aparece mezclado con cdigo


HTML como ocurra en las versiones anteriores de ASP (donde lo habitual es mezclar
cdigo HTML con cdigo ASP). ASP.NET ofrece una mayor separacin entre la lgica de la
aplicacin y la presentacin de la misma.

- Integra el tratamiento de eventos del cliente con el cdigo correspondiente en el servidor.

- Lleva a cabo el mantenimiento del estado del formulario de forma automtica entre
peticiones, esto significa que, si seleccionamos una serie de valores en el Web Form, al
enviarlo, de forma automtica se van a mantener estos valores en el caso de que se vuelva
a recargar el formulario.

Para crear un formulario Web nicamente debemos utilizar una etiqueta <form>, al estilo de las etiquetas
del lenguaje HTML, e incluir la propiedad runat con el valor server. Por ejemplo:

<form id=MiWebForm method=post runat=server>


</form>

Dentro del formulario Web colocaremos los distintos controles de servidor de ASP.NET que necesitemos
para recoger la informacin correspondiente. Estos controles van a realizar las mismas funciones que los
tpicos controles del lenguaje HTML que constituan los campos de un formulario.

- 62 -
5.3. INTRODUCCIN A LOS CONTROLES DE SERVIDOR DE ASP.NET

Los controles ASP.NET son una serie de objetos de servidor que generarn el correspondiente cdigo
HTML para que el usuario pueda visualizarlos y utilizarlos en la pgina cargada en su navegador. Estos
controles se encargan de manejar los eventos generados por el cliente (como la pulsacin de un botn,
seleccin de una opcin en un desplegable, etc).

Con este nuevo modelo, ya no es necesario utilizar los tpicos campos de formulario de HTML que
usbamos junto con ASP 3. Cada control de servidor se corresponde con una clase determinada
perteneciente a un espacio de nombres determinado. Existe un gran nmero de controles de servidor y
cada uno de ellos pertenece a una clase del paquete .NET Framework.

Podemos realizar la siguiente clasificacin:

- Controles HTML: representan controles puramente HTML, los que este lenguaje define
para su uso en formularios.

- Controles Web: son otros componentes que ASP.NET trae preconfigurados y que
implementan elementos ms complejos.

- Controles de lista: utilizados para distribuir y mostrar datos en una pgina (son los
controles DataList y DataGrid, stos los veremos en el prximo captulo).

- Controles avanzados : cada vez se desarrollan ms controles de este tipo, que ofrecen
funcionalidades avanzadas, como controles para rotar anuncios en nuestras pginas o para
simular un calendario completo.

Cuando utilizamos Visual Studio .NET para disear nuestras pginas Web, podemos utilizar dos formas
distintas de definir el posicionamiento de nuestros controles:

- GridLayout: permite un posicionamiento dinmico de los elementos, mediante coordenadas


X e Y. Se realiza gracias a la integracin en los navegadores de las hojas de estilo en
cascada y su posicionamiento dinmico de elementos HTML.

- FlowLayout: este sistema utiliza el mtodo tradicional de HTML de posicionamiento,


mediante prrafos y tablas, colocando los elementos de forma secuencial.

- 63 -
5.4. INTRODUCCIN A LOS CONTROLES HTML

La sintaxis que ofrecen los controles HTML de servidor es muy similar a la sintaxis de los controles
clsicos del lenguaje HTML. Estos controles ofrecen la potencia de los Web Forms y mantienen la
familiaridad y facilidad de uso de las etiquetas HTML que representan los campos de un formulario.

Estos controles tienen el mismo aspecto que una etiqueta HTML, a excepcin de que presentan el
atributo runat con el valor server. Otra diferencia es que posee un atributo especial para el tratamiento
de eventos del cliente con cdigo del servidor. Para realizar el tratamiento de eventos de estos controles
con cdigo de servidor, utilizaremos el atributo onserverevento. A este atributo se le indica como valor el
nombre del mtodo que queremos ejecutar.

Para identificar de forma nica un control ASP.NET, debemos utilizar la propiedad id. Mediante este
identificador podemos hacer referencia al objeto correspondiente en la pgina, y as utilizar el cdigo de
servidor para acceder a sus mtodos o manipular sus propiedades. Cada control del formulario es un
objeto (objetos de la pgina ASP.NET), es decir, una instancia de una clase determinada, y por lo tanto
cada uno de ellos poseer sus propiedades y mtodos.

As, la sintaxis general de un control HTML es:

<input type=elementoHTML id=identificador runat=server>

Los controles HTML estn disponibles para mantener la compatibilidad con versiones anteriores de ASP,
de manera que, si queremos que una etiqueta HTML pase a ser un control HTML, simplemente debemos
indicar la propiedad runat con el valor server. Normalmente, se utilizan el siguiente tipo de controles, los
controles Web (que tambin veremos en este captulo).

A continuacin vamos a ver una descripcin de las distintas clases que se corresponden con los controles
HTML. Estas clases se encuentran dentro del espacio de nombres System.Web.UI.HtmlControls. stas
son las clases que ofrecen al desarrollador el acceso en el servidor a las distintas etiquetas HTML que
finalmente se enviarn al cliente Web como resultado de la ejecucin de la pgina ASP.NET
correspondiente.

La lista de los controles HTML que vienen predefinidos en el sistema ASP.NET son los siguientes:

- 64 -
- HTMLAnchor: Representa a la etiqueta <a>, es decir, es el control HTML que nos permite
manejar enlaces.

- HTMLButton: Representa a la etiqueta <button> de HTML, que es un botn de pulsacin.

- HTMLForm: Representa a la etiqueta <form> de HTML. Esta clase permite definir un Web
Form, que va a realizar la labor de contenedor para los controles de servidor dentro de la
pgina, es decir, todos los controles que deseemos enviar al servidor (mtodo post)
debemos incluirlos dentro de un control de la clase HtmlForm.

- HTMLGenericControl: Esta clase se utiliza para respresentar las etiquetas HTML que no
tienen una correspondencia directa con las clases del paquete .NET Framework (como las
etiquetas <span>,<div> o <body>).

- HTMLImage: Representa a la etiqueta <img> de HTML, que se utiliza para mostrar


imgenes.

- HTMLButton: Representa a los botones de pulsacin para formularios HTML del tipo button,
submit y reset (botn normal, de envo y de restauracin del formulario).

- HTMLInputCheckBox: Representa al elemento <input type=checkbox>, que es una casilla


de verificacin de HTML.

- HTMLInputFile: Representa al elemento <input type=file>, que se utiliza para subir


ficheros desde el cliente al servidor.

- HTMLInputHidden: Representa al elemento <input type=hidden>, que es un control


invisible para almacenar valores alfanumricos.

- HTMLInputimage: Representa al elemento <input type=image>, que es una imagen que


presenta una funcionalidad de envo de un formulario HTML.

- HTMLInputRadioButton: Representa al elemento <input type=radio>, que es una casilla


de opcin de HTML.

- 65 -
- HTMLInputText: Representa a los elementos <input type=text> y <input
type=password>, que son cajas de texto y contrasea de un formulario HTML.

- HTMLSelect: Representa al elemento <select> que es un desplegable de un formulario


HTML.

- HTMLTable: Este control se corresponde con una


tabla del lenguaje HTML, y por tanto, permite el
acceso desde el servidor a una etiqueta <table>. Esta
clase posee una coleccin llamada Rows, que
contiene objetos de la clase HTMLTableRow.

- HTMLTableRow: Es el control HTML que permite


manipular una fila de una tabla.

- HTMLTableCell: Esta clase permite el acceso a las


celdas de una tabla, es decir, se corresponde con las
etiquetas <td> y <th>.

- HTMLTextArea: Este control permite manipular en el


servidor la etiqueta <textarea>, que es una caja de
texto de gran capacidad en un formulario HTML.

Paleta de controles HTML en Visual Studio .NET

5.5. EJEMPLOS CON CONTROLES HTML

ejemplo1.aspx

<%@ Page language =c# %>


<html>
<head>
<title>Ejemplo de uso de controles HTML en una pgina ASP.NET</title>

- 66 -
</head>
<script language=C# runat=server>
void cambia (Object origen, EventArgs args) {
etiqueta.InnerText=lista.Value;
}
</script>
<body>
<form id=formulario runat=server method=post>
<select id=lista runat=server>
<option selected>Azul</option>
<option>Rojo</option>
<option>Verde</option>
<option>Blanco</option>
</select>
<input type=button id=boton runat=server value=Seleccione un color
onserverclick=cambia>
<div id=etiqueta runat=server></div>
</form>
</body>
</html>

Este ejemplo muestra una lista desplegable con una serie de nombres de colores y un botn. Al pulsar el
botn se muestra el elemento seleccionado de la lista en un texto de un elemento <div>.

Podemos comprobar que no se ha utilizado la coleccin Form del objeto Request para obtener los valores
de los elementos enviados en el formulario (como se haca habitualmente en ASP 3), sino que hemos
accedido a las propiedades de los controles a travs del nombre con el que los hemos declarado (el valor
del atributo id, que permite tener acceso a las propiedades y mtodos de cada control del formulario).
Accedemos a la propiedad innerText de la etiqueta para asignarle el valor obtenido de la lista
desplegable.

Si hacemos distintas llamadas al formulario, podremos observar que se mantiene el estado del mismo, es
decir, en el combo se mantiene el elemento seleccionado, sin que tengamos que escribir ningn cdigo
adicional para controlarlo. Esto es posible gracias a que el Web Form genera un campo oculto que
conserva los valores de los campos del formulario.

- 67 -
Resultado de ejecutar ejemplo1.aspx en el navegador

Ejemplo2.aspx

<%@ Page language =c# %>


<html>
<head>
<title>Ejemplo de uso de controles HTML en una pgina ASP.NET</title>
</head>
<script language=C# runat=server>
void cambiaColor (Object origen, EventArgs args) {
cuerpo.Style[background-color]=lista.Value;
}
</script>
<body id=cuerpo runat=server>
<form id=formulario runat=server method=post>
<select id=lista runat=server>
<option value=blue selected>Azul</option>
<option value=red>Rojo</option>

- 68 -
<option value=yellow>Amarillo</option>
<option value=green>Verde</option>
</select>
<input type=button id=boton runat=server value=Seleccione un color
onserverclick=cambiaColor>
</form>
</body>
</html>

En este ejemplo utilizamos un control HTML de la clase HtmlGenericControl, y dos objetos de las clases
HtmllnputButton y HtmlSelect, que se corresponden con el botn y la lista desplegable del formulario. Al
seleccionar un elemento de la lista (un color), y pulsar el botn, se mostrar el documento HTML con el
color de fondo seleccionado en el combo.

En este ejemplo podemos ver cmo aplicar estilos a los controles ASP.NET. Para ello, usamos la
propiedad Style del control, que funciona como una coleccin permitiendo acceder a las distintas
propiedades del control que representan los atributos de las hojas de estilo. En este caso se manipula la
propiedad background-color, para establecer el color de fondo de la pgina actual.

Resultado de ejecutar ejemplo2.aspx en el navegador

- 69 -
Ejemplo3.aspx

<%@ Page language =c# %>


<html>
<head>
<title>Ejemplo de uso de controles HTML en una pgina ASP.NET</title>
</head>
<script language=C# runat=server>
void cambiaImagen (Object origen, EventArgs args) {
imagen.Src=texto.Value;
}
</script>
<body id=cuerpo runat=server>
<form id=formulario runat=server method=post>
<input type=text runat=server id=texto>
<input type=button id=boton runat=server value=Cambia onserverclick=cambiaImagen>
<img src=imagen1.gif runat=server id=imagen>
</form>
</body>
</html>

En este ejemplo se muestra la imagen que se indica en la caja de texto. La imagen se actualiza con la
que indiquemos cada vez que se pulse el botn del formulario.

Resultado de ejecutar ejemplo3.aspx en el navegador

- 70 -
5.6. INTRODUCCIN A LOS CONTROLES WEB

Estos controles cumplen la misma funcionalidad que los anteriores, los controles HTML, pero su sintaxis
es distinta, est basada en XML, y adems, no existe una correspondencia directa entre los controles y
las etiquetas HTML que se generan (como suceda con los controles HTML).

Estos controles pertenecen al espacio de nombres System.Web.UI.WebControls. Ofrecen un nivel de


abstraccin mayor que los anteriores, y su modelo de objetos no refleja la sintaxis HTML necesariamente
(cuando la pgina se carga en el navegador, el control Web determina el navegador que ha realizado la
peticin, y de acuerdo con esta informacin genera el cdigo HTML apropiado y especfico para ese
navegador Web).

La sintaxis general de un control Web es :

<asp:nombreControl id=identificador runat=server></asp:nombreControl>

Cuando el control Web no tiene cuerpo, tambin podemos usar esta otra forma de sintaxis:

<asp:nombreControl id=identificador runat=server />

Adems de la diferencia de sintaxis, entre los controles HTML y controles Web, algunos nombres de
propiedades tambin cambian, por ejemplo, el control HTML button posee la propiedad value, y sin
embargo el control Web equivalente posee la propiedad text para mostrar el texto del botn.

Para indicar los mtodos para el tratamiento de eventos de la pulsacin de un botn del ratn en los
controles HTML hemos visto que utilizamos la propiedad onserverclick, pues, en los controles Web
utilizamos la propiedad OnClick.

En los controles HTML se debe distinguir si se trata de un evento de cliente o de servidor (ya que
podemos tratar ambos tipos, de servidor como hemos visto en el apartado de controles HTML, y de
cliente, a travs de algn lenguaje de script de cliente, como JavaScript). Sin embargo, desde los
controles Web slo tenemos la posibilidad de utilizar eventos de servidor, es decir, eventos que son
tratados por rutinas, cdigo que se ejecuta en el servidor.

- 71 -
Al igual que ocurra con los controles HTML, para permitir hacer referencia a los controles dentro del
cdigo fuente de la pgina, debemos utilizar el atributo id, de esta forma podemos utilizar el objeto que se
corresponde con el control de servidor para utilizar sus mtodos o manipular sus propiedades.

A continuacin vamos a ver los principales controles Web que vienen predefinidos en el sistema
ASP.NET (para una referencia completa de todos ellos, debemos consultar la referencia tcnica de
Microsoft):

- Button: Este control Web representa un botn. Se corresponde con la etiqueta <input
type=submit>, es decir, un botn que enva el contenido de un formulario al servidor. Para
tratar el evento de pulsacin del botn, utilizamos la propiedad OnClick de la clase Button.

- CheckBox: Este control Web representa una casilla de verificacin. Se corresponde con la
etiqueta <input type=checkbox>. El evento que se lanza al pulsar sobre un CheckBox es el
evento CheckedChanged. Para utilizar checkbox mltiples podemos usar el control
CheckBoxList.

- CheckBoxList: Este control permite utilizar una lista de seleccin mltiple de elementos
checkbox. Este objeto posee una coleccin Items que contiene todos los objetos CheckBox.

- DropDownList: Este control representa una lista desplegable, y se corresponde con la


etiqueta <select> de HTML.

- HiperLink: Representa un elemento de hipervnculo (enlace) a otra pgina, por lo tanto,


generar en el cliente una etiqueta <a>.

- Image: Este control representa una imagen. Generar como resultado de su ejecucin una
etiqueta <img> de HTML. Para indicar la imagen que queremos mostrar, utilizaremos la
propiedad ImageURL.

- ImageButton: Este control representa una imagen que acta como botn tipo submit, es
decir, al pulsar sobre la imagen se envan los contenidos del formulario al servidor. Generar
como resultado de su ejecucin una etiqueta <input type=image> de HTML.

- 72 -
- Label: Representa una etiqueta de texto. Generar como resultado de su ejecucin una
etiqueta <span> de HTML.

- LinkButton: Este control representa un botn que presenta un estilo similar a los enlaces,
su apariencia es similar a un control Hiperlink, pero ofrece la misma funcionalidad que un
control Button, es decir, presenta un texto a modo de enlace que al pulsarlo enviar el
formulario en el que se encuentre al servidor.

- ListBox: Representa a un cuadro de lista, es similar al control DropDownList, pero en este


caso se muestran varios elementos de la lista y se permite la seleccin mltiple. En su
propiedad Rows indicamos el nmero de filas visibles que va a mostrar el control, y en la
propiedad SelectionMode indicamos si se permite la seleccin mltiple (valor Multiple) o bien
la seleccin simple (valor Single, es el valor por defecto).

- Panel: Este control se utiliza para agrupar controles (acta como contenedor de otros
controles). Posee una propiedad Controls que es una coleccin que contiene todos los
controles incluidos dentro del objeto Panel.

- RadioButton: Representa un botn de opcin que se corresponde con el elemento <input


type=radio> de HTML. Permite seleccionar una opcin dentro de un mismo grupo de
opciones. Las opciones se agrupan mediante la propiedad GroupName.

- RadioButtonList: Este control representa una lista seleccin mltiple de elementos


RadioButton. Posee una coleccin Items que contiene todos los objetos RadioButton. Este
control es parecido al control CheckBoxList, pero en este caso se utilizan controles
RadioButton en lugar de CheckBox.

- Style: Este control representa al estilo (CSS) de un control de servidor, es decir, podemos
usar estilos para mejorar y personalizar el aspecto los controles.

- Table, TableRow y TableCell: Estos controles estn muy relacionados entre s, mediante la
utilizacin de todos ellos podemos generar tablas en HTML. El control Table representa una
tabla (etiqueta <table> de HTML). Esta clase posee una coleccin llamada Rows, que
contiene objetos de la clase TableRow, y que representan las filas de la tabla. A su vez, el
objeto TableRow tiene una coleccin llamada Cells, que contiene las columnas para esa fila
de la tabla.

- 73 -
- TextBox: Este control representa una caja de texto.

- Xml: Este control se utiliza para mostrar un documento XML en la pgina.

Creando un Web Form en la vista diseo de Visual Studio .NET

5.7. EJEMPLOS CON CONTROLES WEB

ejemplo4.aspx

<%@ Page language =c# %>


<html>
<head>
<title>Ejemplo de uso de controles Web en una pgina ASP.NET</title>
</head>
<script language=C# runat=server>
void cambia (Object origen, EventArgs args) {
etiqueta.Text=Ha seleccionado + lista.SelectedItem.Text;

- 74 -
}
</script>
<body>
<form id=formulario runat=server method=post>
<asp:ListBox id=lista runat=server>
<asp:ListItem selected>Java</asp:ListItem>
<asp:ListItem>ASP</asp:ListItem>
<asp:ListItem> PHP</asp:ListItem>
<asp:ListItem>JSP</asp:ListItem>
</asp:ListBox>
<asp:Button id=boton runat=server Text=Seleccione un lenguaje OnClick=cambia /><br>
<asp:Label id=etiqueta runat=server />
</form>
</body>
</html>

Este ejemplo muestra un formulario con una lista desplegable con los nombres de distintos lenguajes de
programacin, y un botn. Al seleccionar un elemento de la lista y pulsar el botn, se muestra el elemento
elegido de la lista en una etiqueta.

Resultado de ejecutar ejemplo4.aspx en el navegador

- 75 -
ejemplo5.aspx

<%@ Page language =c# %>


<html>
<head>
<title>Ejemplo de uso de controles Web en una pgina ASP.NET</title>
</head>
<script language=C# runat=server>
void obtenerFecha (Object origen, EventArgs args) {
DateTime ahora;
ahora = DateTime.Now;
etiqueta.Text = Fecha/Hora actuales: + ahora.ToString();
}
</script>
<body>
<form id=formulario runat=server method=post>
<asp:Button id=boton runat=server Text=Obtener fecha OnClick=obtenerFecha /><br>
<asp:Label id=etiqueta runat=server />
</form>
</body>
</html>

En este ejemplo se muestra la fecha y hora actuales en un objeto de la clase Label al capturar el evento
de pulsacin del botn.

Resultado de ejecutar ejemplo5.aspx en el navegador

- 76 -
Ejemplo6.aspx

<%@ Page language =c# %>


<html>
<head>
<title>Ejemplo de uso de controles Web en una pgina ASP.NET</title>
</head>
<script language=C# runat=server>
void compruebaCasilla (Object origen, EventArgs args) {
if (casilla.Checked == true) {
etiqueta.Text = La casilla de verificacin est marcada ;
}else {
etiqueta.Text = La casilla de verificacin no est marcada ;
}
}
</script>
<body>
<form id=formulario runat=server method=post>
<asp:CheckBox id=casilla runat=server Text=Casilla de verificacin /><br>
<asp:Button id=boton runat=server Text=Comprobar OnClick=compruebaCasilla /><br>
<asp:Label id=etiqueta runat=server />
</form>
</body>
</html>

En este ejemplo al pulsar el botn se comprueba si el objeto de la clase Checkbox se encuentra marcado
o no y se muestra un mensaje indicndolo en un objeto de la clase Label.

Resultado de ejecutar ejemplo6.aspx en el navegador

- 77 -
Ejemplo7.aspx

<%@ Page language =c# %>


<html>
<head>
<title>Ejemplo de uso de controles Web en una pgina ASP.NET</title>
<style>
.estilo{ font: 14px verdana; color: red; background-color:#CCCCCC }
</style>
</head>
<body>
<asp:Label id=etiqueta runat=server CssClass=estilo > Ejemplo de aplicacin de estilos
sobre un control Web Label</asp:Label>
</body>
</html>

Podemos aplicar un estilo a un control Web a travs de la propiedad CssClass. A esta propiedad le
asignaremos el nombre de la clase que define el estilo que se desea aplicar al control.

Resultado de ejecutar ejemplo7.aspx en el navegador

- 78 -
Ejemplo8.aspx

<%@ Page language =c# %>


<%@ Import Namespace =System.Drawing %>
<html>
<head>
<title>Ejemplo de uso de controles Web en una pgina ASP.NET</title>
</head>
<script language=C# runat=server>
void PageLoad (Object origen, EventArgs args) {
Style estilo = new Style();
estilo.BorderColor=Color.Green;
estilo.BorderStyle=BorderStyle.Dashed;
estilo.ForeColor=Color.Blue;
estilo.BackColor=Color.Pink;
estilo.Font.Name=Courier;
estilo.Font.Size=16;
estilo.Font.Italic=true;
etiqueta.ApplyStyle(estilo);
}
</script>
<body>
<asp:Label id=etiqueta runat=server > Ejemplo de aplicacin de estilos sobre un control Web
</asp:Label>
</body>
</html>

Otra forma de aplicar un estilo a un control Web es a travs del mtodo ApplyStyle. Este mtodo recibe
como parmetro un objeto de la clase Style (cuyas propiedades contienen los valores del estilo). En este
ejemplo hemos importado el espacio de nombres System.Drawing, para tener acceso a las clases Color y
BorderStyle.

- 79 -
Resultado de ejecutar ejemplo8.aspx en el navegador

Ejemplo9.aspx

<%@ Page language =c# %>


<html>
<head>
<title>Ejemplo de uso de controles Web en una pgina ASP.NET</title>
</head>
<script language=C# runat=server>
void cambiaImagen (Object origen, EventArgs args) {
imagen.ImageUrl=lista.SelectedItem.Value;
imagen.AlternateText=lista.SelectedItem.Text;
}
</script>
<body>
<form id=formulario runat=server method=post>
<asp:Image id=imagen runat=server ImageUrl= AlternateText= />
<asp:DropDownList AutoPostBack=True id=lista OnSelectedIndexChanged=cambiaImagen
runat=server >
<asp:ListItem value=imagen1.gif>imagen 1</asp:ListItem>

- 80 -
<asp:ListItem value=imagen2.jpg>imagen 2</asp:ListItem>
<asp:ListItem value=imagen3.gif>imagen 3</asp:ListItem>
</ asp: DropDownList >
</form>
</body>
</html>

Este Web Form tiene un objeto de la clase DropDownList con nombres de ficheros de imagen, y un objeto
de la clase Image que mostrar la imagen que seleccionemos en la lista desplegable (capturamos el
evento OnSelectedIndexChanged para actualizar la imagen cada que seleccionemos un elemento de la
lista). Este evento se produce cada vez que se modifica la seleccin de un elemento de la lista y adems,
la propiedad AutoPostBack del objeto DropDownList tiene el valor true.

Resultado de ejecutar ejemplo9.aspx en el navegador

- 81 -
RECUERDE

- Podemos representar a la pgina ASP.NET actual como un objeto de la clase Page. Este objeto nos
sirve como contenedor de todos los componentes que constituyen la pgina, y nos permite acceder a
sus propiedades, mtodos y eventos.

- Los Web Forms sustituyen a los formularios HTML dentro del entorno de programacin de ASP.NET.

- Dentro del formulario Web colocaremos los distintos controles de servidor de ASP.NET que
necesitemos para recoger la informacin correspondiente.

- Existe un gran nmero de controles de servidor y cada uno de ellos pertenece a una clase del
paquete.NET Framework.

- Existen controles HTML, controles Web, controles de lista y controles avanzados.

- Los Web Forms ofrecen un modelo de programacin ms visual, el cdigo resultante es ms limpio,
permiten una mayor separacin entre la lgica de la aplicacin y la presentacin de la misma,
integran el tratamiento de eventos del cliente con el cdigo correspondiente en el servidor y llevan a
cabo el mantenimiento del estado del formulario de forma automtica entre peticiones.

- 82 -
COMPONENTES
Tema 6 (DATA LIST,
DATA GRID)

6.1. EL CONTROL DATALIST_________________________________ 85


6.2. EL CONTROL DATAGRID ________________________________ 87

- 83 -
En este captulo veremos una introduccin a los controles Web de lista DataList y DataGrid. Estos
controles estn especializados en mostrar listados de datos en las pginas ASP.NET.

6.1. EL CONTROL DATALIST

Este control permite mostrar un listado de datos. Podemos personalizar su apariencia a travs de las
propiedades RepeatDirection, RepeatLayout y RepeatColumns, que permiten indicar de qu forma se
mostrarn y distribuirn los datos:

- RepeatLayout: esta propiedad indica la distribucin que tomarn los datos presentados.
Puede tomar dos valores, Table, para presentar un formato de distribucin de tabla tpico de
HTML, (se generar todo el cdigo de filas y columnas de una tabla HTML), o el valor Flow,
para que los datos se distribuyan de forma lineal. El valor por defecto es Table.

- RepeatDirection: esta propiedad indica la orientacin que tomarn los datos contenidos en
el DataList, es decir, si se mostrarn de forma horizontal o vertical. Los valores que puede
tomar son Vertical y Horizontal. Por defecto toma el valor Vertical.

- RepeatColumns: en esta propiedad indicaremos el nmero de columnas utilizado para


mostrar los datos. Por defecto el valor que toma es 1.

Veamos un ejemplo de este control:

datalist.aspx

<%@ Page language =c# %>


<%@ Import Namespace =System.Data %>
<%@ Import Namespace =System.Data.SqlClient %>

<html>
<head>
<title>Ejemplo de uso del control Web DataList en una pgina ASP.NET</title>
</head>

- 85 -
<script language=C# runat=server>
void Page_Load (Object origen, EventArgs args) {
if (!Page.IsPostBack) {
SqlConnection con= new SqlConnection(server=platon; database=bdprueba;
uid=user; pwd=prueba );
SqlDataAdapter comando= new SqlDataAdapter (Select nombre, apellido from
Clientes, con);
DataSet datos=new DataSet();
comando.Fill(datos, Clientes);
listado.DataSource = datos.Tables[Clientes].DefaultView;
listado.DataBind();
}
}
</script>
<body>
<asp:DataList id=listado runat=server
RepeatDirection=Vertical RepeatLayout=Table RepeatColumns=3 GridLines=Both >

<ItemTemplate>
<%# ((DataRowView)Container.DataItem)[nombre] %>&nbsp;
<%# ((DataRowView)Container.DataItem)[apellido] %>&nbsp;
</ItemTemplate>

</asp:DataList>
</body>
</html>

Como el resto de controles Web que hemos visto, la etiqueta del control tiene el atributo runat con el valor
server. Este ejemplo mostrar los datos en una tabla que muestra todos los bordes, con tres columnas
en cada fila y con una distribucin vertical de la informacin. El valor Both en la propiedad GridLines
indica que deben mostrarse las lneas de separacin de la tabla.

Debido a que el control DataList est asociado a unos datos, hemos importado en el ejemplo los espacios
de nombres System.Data y System.Data.SqlClient, que proporcionan las clases del .NET para

- 86 -
conectarnos a una base de datos y enviar comandos. En este caso, nos conectamos a una base de datos
llamada bdprueba, con el usuario user y contrasea prueba. El conjunto de resultados obtenidos de la
consulta lo asociamos a un objeto DataSet, que est vinculado a nuestro control DataList, con id listado.

Al ejecutar esta pgina obtendramos en nuestro navegador una tabla HTML que contiene los datos
obtenidos de la consulta a la tabla Clientes.

6.2. EL CONTROL DATAGRID

Este control muestra la informacin en forma de tabla con celdas y columnas, es decir, se generar el
cdigo HTML necesario para formar la tabla que visualiza los datos.

Veamos un ejemplo que ilustre su uso.

datagrid.aspx

<%@ Page language =c# %>


<%@ Import Namespace =System.Data %>
<%@ Import Namespace =System.Data.SqlClient %>

- 87 -
<html>
<head>
<title>Ejemplo de uso del control Web DataGrid en una pgina ASP.NET</title>
</head>
<script language=C# runat=server>
void Page_Load (Object origen, EventArgs args) {
if (!Page.IsPostBack) {
SqlConnection con= new SqlConnection(server=platon; database=bdprueba;
uid=user; pwd=prueba );
SqlDataAdapter comando= new SqlDataAdapter (Select nombre, apellido,
edad from Clientes, con);
DataSet datos=new DataSet();
comando.Fill(datos, Clientes);
tabla.DataSource = datos.Tables[Clientes].DefaultView;
tabla.DataBind();
}
}
</script>
<body>
<asp:DataGrid id=tabla runat=server GridLines=Both BorderWidth=1
HeaderStyle-BackColor=pink HeaderStyle-Font-Bold=True >
</asp:DataGrid>
</body>
</html>

Como en el ejemplo anterior, nos conectamos a la base de datos y obtenemos un conjunto de resultados
que vinculamos al control DataGrid.

Por defecto, este control genera una columna por cada campo presente en el origen de datos. Por su
parte, l/os valores de los campos se mostrarn en cada columna como etiquetas de texto y el nombre de
los campos aparecer en la primera fila de la tabla generada (como cabecera de los datos).

- 88 -
El cdigo HTML que genera este ejemplo y que le llega al cliente que solicita la pgina ASP.NET, es el
siguiente:

<html>
<head>
<title>Ejemplo de uso del control Web DataGrid en una pgina ASP.NET</title>
</head>
<body>
<table cellspacing="0" rules="all" border="1" id="tabla"
style="border-collapse:collapse; border-style:solid; border-width:1px">

<tr style="background-color:pink;font-weight=bold">
<td>Nombre</td><td>Apellido</td><td>Edad</td>
</tr>
<tr><td>Laura</td><td>Hermoso</td><td>25</td></tr>
<tr><td>Susana</td><td>Ortiz</td><td>30</td>/tr>
<tr><td>Nerea</td><td>Barranco</td><td>31</td></tr>
<tr><td>Luis</td><td>Costa</td><td>23</td></tr>
<tr><td>Sergio</td><td>Ruano</td><td>29</td></tr>
<tr><td>Antonio</td><td>Aguilar</td><td>28</td></tr>

</table>
</body>
</html>

- 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 DE
PGINAS

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:

<%@ directiva atributo=valor [atributo=valor ...] %>

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 <%@ y termina con %>. 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 <%@ Language=VBScript %> de ASP, equivale en ASP.NET a <%@
Page Language=VB %>.

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:

<%@ Page Language=C# ContentType=text/html EnableSessionState=ReadOnly %>

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:

<%@ Import NameSpace=valor %>

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:

<%@ Implements Interface=nombreInterfaz %>

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:

<%@ Assembly Name=Librera %>


<%@ Assembly Src=Librera.cs %>

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 DE
IIS

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 EL ARCHIVO
GLOBAL.ASAX

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:

<script language=C# runat=server>


[Mtodos para el tratamiento de eventos,
inicializacin de objetos con mbito de Sesin y Aplicacin]
</script>

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 Application_OnDisposed
Se modifica el fichero GLOBAL.ASAX

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 EL ARCHIVO
WEB.CONFIG

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 <configuration>. Dentro
de este elemento, entre sus etiquetas de comienzo y fin, aparecern las distintas secciones de
configuracin para aplicar a la aplicacin ASP.NET:

<configuration>
<!Configuracin para aplicar a la aplicacin ASP.NET -->
</configuration>

- 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 <httpRuntime>. 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):

<configuration>
<system.web>
<httpRuntime
executionTimeout=90
maxRequestLength=4096
useFullyQualifiedRedirectUrl=false

- 123 -
/>
</system.web>
</configuration>

10.3. CONFIGURACIN DE LA PGINA

Aqu veremos la etiqueta <pages>, 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 <pages> en un fichero de configuracin podra ser:

<configuration>
<system.web>
<pages buffer=true enableSessionState=true autoEventWireup=true
enableSessionState=true
/>
</system.web>
</configuration>

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 <pages> con el atributo a
sobrescribir:

<configuration>
<system.web>
<pages buffer=false />
</system.web>
</configuration>

10.4. CONFIGURACIN DE LA SESIN

Podemos configurar el estado de sesin mediante la etiqueta <sessionState>. 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:

<configuration>
<system.web>
<sessionState
cookieless=true
timeout=30
/>
</system.web>
</configuration>

- 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 -
MDULOS Y
Tema 11 MANEJADORES
http

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 <httpModules> 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
<httpHandlers> 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 <add> de la etiqueta <httpHandlers>. 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 <add> 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(<html><body><h2>);
respuesta.Write (Saludos + solicitud.QueryString[nombre] );
respuesta.Write(</h2></body></html>);
}
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:

<configuration>
<system.web>
<httpHandlers>
<add verb=* path=pruebaManejador.aspx
type=Componentes.Pruebas.miManejador, Componente />
</httpHandlers>
</system.web>
</configuration>

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 <httpModules> 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
<httpHandlers> de los ficheros de configuracin XML.

- Podemos aadir nuestros propios manejadores incluyendo una nueva etiqueta <add> 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 EN
ASP.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 <authentication> con la opcin Forms y denegar el acceso a los usuarios annimos. Para ello,
nuestro web.config debera presentar una configuracin como sta:

<configuration>
<system.web>
<authentication mode="Forms"/>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>

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 <forms>, que es un
subelemento de la etiqueta <authentication mode="Forms">.

<authentication mode="Forms">

- 138 -
<forms name=".COOKIE_AUT" loginUrl="paginaLogin.aspx" protection="all" timeout="30" path="/">
</forms>
</authentication>

Los atributos de la etiqueta <forms> 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 <credentials>, que es una
subetiqueta de la etiqueta <authentication>. Dentro de <credentials>, indicaremos en la etiqueta <user>
el nombre de usuario y contrasea vlidos para los usuarios autenticados.

<authentication>
<credentials passwordFormat="SHA1" >
<user name="usuario1" password="BADE125DS2855DS22DSE" />

- 139 -
<user name="usuario2" password="AETDS43ASDFE2814ASDF" />
</credentials>
</authentication>

Segn se indique en el atributo passwordFormat de la etiqueta <credentials>, 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 <allow> y <deny> de la etiqueta <authorization> en nuestro fichero web.config.

<authorization>
<allow users="usuario1" />
<deny users="*" />
</authorization>

En este ejemplo, se concede acceso al usuario llamado usuario1, y se deniega el acceso a todos los
dems usuarios.

Cada elemento <allow> o <deny> 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:

<allow users="usuario1,usuario2,usuario3" />

Para indicar el mtodo HTTP utilizaremos el atributo Verb de las etiquetas <allow> y <deny>:

<allow VERB="POST" users="usuario4,usuario5" />


<deny VERB="POST" users="*" />

- 140 -
<allow VERB="GET" users="*" />

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 autenticados y usar
una atenticacin basada en formularios (como hemos visto en el apartado anterior), para asegurarnos de
que nicamente los usuarios autenticados podrn acceder a nuestros recursos:

<authorization>
<deny users="?" />
</authorization>

Debemos tener en cuenta que el archivo web.config predeterminado permite el acceso a todos los
usuarios.

- 141 -
RECUERDE

- Como mecanismo de seguridad en ASP.NET, no est permitido realizar peticiones directas a los
ficheros global.asax o web.config.

- Es posible bloquear valores de configuracin en los ficheros de configuracin XML para evitar que
puedan sobrescribirse en un nivel inferior.

- Podemos establecer mecanismos de autenticacin y autorizacin de usuarios en las aplicaciones


ASP.NET mediante la configuracin de las etiquetas <authentication> y <authorization> en los
ficheros web.config.

- 142 -
GLOSARIO

A
ASP. Active Server Pages. Se trata de las pginas activas del servidor Internet Information Server. ASP 3
es la anterior versin de ASP a las nuevas pginas ASP.NET.

C
CLR. Common Language Runtime o Motor de Ejecucin Comn incluido en el paquete Microsoft .NET.

CSS. Cascading Style Sheets, Hojas de Estilo en Cascada. Se utilizan para dar formato a documentos
HTML o XML, separando los datos del formato de presentacin.

CTS. Common Type System. Especificacin de tipos bsicos para la integracin de distintos lenguajes de
programacin en Microsoft .NET (como C#, Visual Basic .NET, Jscript. .NET).

C#. Lenguaje creado por Microsoft para su plataforma .NET, es parecido a C++ y Java.

D
DHTML. 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.

H
HTML. HiperText Markup Language. Lenguaje para la creacin de pginas Web relacionadas entre s por
hipertexto.

HTTP. HiperText Transport Protocol. Protocolo de comunicaciones utilizado por los navegadores de
Internet para el acceso a recursos Web, como ficheros de imgenes, de video, pginas HTML, pginas
ASP, pginas ASPX, etc.

I
IIS. Internet Information Server. Es el servidor Web de Microsoft. ASP.NET funciona sobre sobre IIS 5.0.

J
Java. Lenguaje de programacin orientado a objetos desarrollado por Sun Microsystems.

- 143 -
JavaScript. Lenguaje de script desarrollado por Netscape y utilizado en los navegadores de Internet.

J2EE. Java 2, Enterprise Edition. Modelo de desarrollo y aplicacin propuesto por SUN y basado en el
desarrollo de componentes Java.

JSP. Java Server Pages. Solucin de SUN Microsystems para el desarrollo de aplicaciones Web. Se
basan en la especificacin de Servlets de SUN.

M
MSIL. Lenguaje intermedio para la ejecucin de aplicaciones en Microsoft .NET.

P
PHP. Personal Home Page, Procesador de Hipertexto. Las pginas PHP presentan 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.

V
VBScript. Visual Basic Script. Lenguaje de script desarrollado por Microsoft.

X
XML. eXtensible Markup Language, Lenguaje de marcado extensible. Se utiliza para la construccin de
documentos de datos estructurados multi-propsito.

- 144 -

También podría gustarte