Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual de ASP NET
Manual de ASP NET
Manual de ASP NET
Tema 1
INTRODUCCIN AL
DESARROLLO DE
APLICACIONES
WEB
-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-
-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.
-5-
-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.
Presenta una tcnica similar a las pginas ASP de Microsoft, es decir, las pginas HTML incluyen el
cdigo PHP embebido en ellas, y al ejecutarlas, se genera cdigo HTML dinmicamente.
Por otro lado, es preciso mencionar que soporta clases, pero no est orientado a objetos, aunque dispone
de una gran nmero de libreras de funciones para realizar operaciones avanzadas como acceso a bases
de datos, correo electrnico, transferencia de ficheros, comunicaciones, etc.
Las pginas PHP tambin se han extendido mucho en los ltimos aos (son las pginas Web que vemos
con extensin .php o .phtml), aunque parece ser que se tiende a utilizar las soluciones de Java y
ASP.NET en las nuevas aplicaciones.
En esta direccin podemos encontrar toda documentacin necesaria sobre PHP, como manuales, la
referencia del lenguaje, entornos, etc. y adems en varios idiomas.
-8-
1.4. DHTML
Sus siglas significan Dinamic HTML (HTML dinmico). Se forma de una conjuncin de HTML, hojas de
estilo en cascada (CSS) y lenguajes de script como JavaScript o VBScript. Estos lenguajes de script se
ejecutan en la mquina cliente (en el navegador del usuario que solicita una pgina). De hecho, sta es
una gran diferencia con el resto de las anteriores tecnologas que hemos visto en los apartados
anteriores. Normalmente, un desarrollador Web, utilizar alguna de las tecnologas anteriores, basadas
en servidor, que implementa la lgica principal y fundamental de la aplicacin, en conjuncin con el HTML
dinmico, ya que gracias a ste, podemos conseguir efectos muy vistosos en nuestras pginas, como
formateo ms completo al HTML, alternancia de imgenes, capas (contenido de la pgina cuya posicin y
tamao puede cambiar), con lo que obtenemos desplazamiento de imgenes, banners, cambios de
visibilidad en los elementos de la pgina (partes de la pgina que aparecen o desaparecen en funcin de
los eventos o acciones del usuario), validaciones de entradas del usuario antes de enviar los datos al
servidor, etc.
En esta direccin podemos encontrar una referencia muy completa del lenguaje JavaScript
-9-
RECUERDE
El desarrollo de aplicaciones Web ha evolucionado rpidamente en los ltimos aos. Las pginas
estticas que usaban nicamente el lenguaje HTML 3.2, han pasado a sitios Web interactivos que
ofrecen multitud de servicios a los usuarios.
Actualmente se utilizan tecnologas como DHTML (HTML, CSS y lenguajes de script, como VBScript
o JavaScript, que se ejecutan en el cliente), y ASP 3, PHP, JSP y Servlets, y ASP.NET (tecnologas
que se ejecutan en el servidor).
- 10 -
Tema 2
REQUISITOS DEL
ASP.NET
(.NET FRAMEWORK)
- 11 -
En este captulo vamos a comentar los programas necesarios para poder desarrollar aplicaciones
ASP.NET:
-
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).
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 -
- 14 -
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
XML
THREADING
Etc.
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
La plataforma .NET tiene soporte multi-lenguaje. Actualmente, estn soportados los lenguajes
VB.NET, C#, C++ y Jscript.NET.
- 18 -
Tema 3
CONCEPTOS DE LA
PROGRAMACIN
ORIENTADA A
OBJETOS
- 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.
- 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 nombre del mtodo (accin o comportamiento que queremos que realice), cambiar de
marcha en nuestro automvil, etc.
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 -
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.
Turismo
Deportivo
Limusina
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.
- 27 -
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.
- 28 -
RECUERDE
El encapsulamiento separa la interfaz de la implementacin ocultando los datos dentro del objeto y
permitiendo el acceso a los datos de dicho objeto a travs de funciones miembro (mtodos).
Las subclases heredan las funciones miembro y las variables de sus clases padre, haciendo sencilla
la reutilizacin de las funcionalidades de las clases padre.
El polimorfismo permite crear cdigo genrico y reutilizable que podr funcionar con una amplia
gama de clases diferentes.
- 29 -
Tema 4
CREANDO UNA
PGINA
BSICA
- 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 -
- 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 -
- 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);
%>
- 40 -
- 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.
Resta.
Multiplicacin.
Divisin.
Operador de decremento.
&
&&
Similar a &, pero en el caso de que no se cumpla alguna expresin, el resto de las
- 42 -
^= Operador de potencia.
*=
Operador de multiplicacin.
/=
Operador de divisin.
+= Operador de suma.
-=
Operador de resta.
&=
%=
Operador de mdulo.
Mayor que.
<
Menor que.
[]
?:
is
debido a la herencia).
sizeof Devuelve el tamao en bytes de un tipo de datos.
typeof Devuelve el tipo de un objeto.
- 43 -
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.
- 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 CodeBehind, 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 -
<br>
El nmero de puertas es:
<% =coche1.getNumeroPuertas() %>
</body>
</html>
- 50 -
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.
- 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.
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.
readonly: Este modificador marca a una propiedad como de slo lectura (pero puede
inicializarse dentro de un constructor de dicha clase).
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
Es un lenguaje orientado a objetos, que permite aplicar los mecanismos propios de la POO, como
derivacin, abstraccin o encapsulamiento.
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.
- 54 -
Tema 5
CONCEPTOS DE
WEB FORMS
- 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
un
objeto
de
la
clase
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
- 58 -
Application:
esta
propiedad
es
una
referencia
un
objeto
de
la
clase
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.
Response:
esta
propiedad
es
una
referencia
un
objeto
de
la
clase
- 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
un
objeto
de
la
clase
User: esta propiedad devuelve informacin sobre el usuario que ha solicitado la pgina
ASP.NET.
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.
- 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:
-
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 -
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:
-
- 63 -
- 64 -
HTMLAnchor: Representa a la etiqueta <a>, es decir, es el control HTML que nos permite
manejar enlaces.
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>).
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).
- 65 -
HTMLInputText:
Representa
los
elementos
<input
type=text>
<input
- 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 -
- 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.
- 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.
- 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.
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.
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.
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 -
- 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.
- 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.
- 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.
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.
- 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 -
- 80 -
- 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.
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 -
Tema 6
COMPONENTES
(DATA LIST,
DATA GRID)
- 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.
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.
- 85 -
- 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.
- 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.
ASP.NET genera el cdigo HTML necesario para representar los datos adecuadamente en forma
tabular o lineal.
- 90 -
Tema 7
DIRECTIVAS DE
PGINAS
- 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:
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.
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 -
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
- 96 -
Si deseamos hacer referencia a varias libreras DLL, debemos utilizar una directiva por cada una.
Esta directiva cuenta con los siguientes atributos:
-
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
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.
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
- 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 -
- 103 -
- 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:
-
Lectura.
Escritura.
Examinar directorios.
Slo secuencias de comandos: para permitir la ejecucin de las pginas ASP y ASP.NET.
- 105 -
- 106 -
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 -
- 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 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.
- 110 -
Tema 9
EL ARCHIVO
GLOBAL.ASAX
- 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>
- 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.
forzado
mediante
una
llamada
al
mtodo
Abandon()
de
la
clase
- 114 -
Application_OnStart
Session_OnStart
La sesin caduca
Session_OnEnd
Application_OnDisposed
Application_OnEnd
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
- 115 -
es
una
instancia
de
la
clase
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
- 117 -
Tema 10
EL ARCHIVO
WEB.CONFIG
- 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:
-
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.
- 121 -
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 -
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).
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 -
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
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.
- 127 -
Tema 11
MDULOS Y
MANEJADORES
http
- 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 -
- 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.
- 134 -
Tema 12
SEGURIDAD EN
ASP.NET
- 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.
- 137 -
Autorizacin de URL, que autoriza a una identidad el acceso a partes del espacio Web.
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.
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).
- 139 -
- 140 -
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.
- 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 -