Sie sind auf Seite 1von 183

CURSODE

ASP.Net

NDICE GENERAL
UNIDAD DIDCTICA 1: CARACTERSTICAS GENERALES ASP.Net

LECCIN 1: Introduccin al .Net Framework

1.

Conceptos generales de .Net Framework

2.

Aspectos generales de ASP.Net

3.

Entorno Visual Studio .Net y Visual Web Developer

3.1. Visual Studio

3.2. Visual Web Developer

LECCIN 2: Infraestructura de ASP.Net


1.

19

23

Mdulos HTTP y Controladores HTTP

23

1.1. Mdulos HTTP

23

1.2. Controladores Http

29

2.

Administracin de Estados ASP.Net

35

3.

Enrutamiento

39

EJERCICIOS DE REPASO UNIDAD DIDCTICA 1

48

ENUNCIADOS

48

SOLUCIONES

49

UNIDAD DIDCTICA 2: CREACIN DE UN SITIO WEB

50

LECCIN 1: Planeamiento de un Sitio Web en ASP.Net

50

1.

Ciclo de vida

50

1.1. Ciclo de vida de una aplicacin ASP.Net para IIS 5.0 e IIS 6.0

50

1.2. Ciclo de vida de una pgina ASP.Net

56

2.

Creando una pgina Web

60

3.

Controles

70

3.1. Controles de usuario

70

3.2. Controles de servidor

75

3.3. Controles de elementos

80

Modelo de cdigo de pginas

82

4.1. Modelo de pgina de un solo archivo

83

4.2. Modelo de pgina de cdigo subyacente (code behind)

84

4.

LECCIN 2: Servicios Web XML con ASP.Net

86

1. Infraestructura servicios web XML

86

2. Mtodos asincrnicos

94

3. Transacciones en servicios web XML

98

4. Proteger servicios web XML.Soap

101

5. Implementar y publicar servicios web XML

105

5.1. Implementacin

105

5.2. Publicacin

108

6. Herramientas de Servicios Web XML

111

6.1. WSDL.exe

111

6.2. Disco.exe

117

7. Esquema de Configuracin de Servicios web XML

EJERCICIOS DE REPASO UNIDAD DIDCTICA 2

119

124

ENUNCIADOS

124

SOLUCIONES

125

UNIDAD DIDCTICA 3: FUNCIONALIDADES CON ASP.NET

126

LECCIN 1: Manejo de funcionalidades con ASP.Net

126

1.

Agregar AJAX a sitios web

126

2.

Obtencin de acceso a datos

134

2.1. Controles de origen de datos

135

2.2. Controles enlazados a datos

136

2.3. Linq

138

2.4. Datos dinmicos

140

LECCIN 2: Optimizacin de aplicaciones ASP.Net


1.

Aplicar seguridad en aplicaciones ASP.Net

143
143

1.1. Suplantacin

149

1.2. Autenticacin de formularios

150

2.

Mejora de rendimiento de aplicaciones ASP.Net

152

3.

Depuracin en ASP.Net

154

EJERCICIOS DE REPASO UNIDAD DIDCTICA 3

158

ENUNCIADOS

158

SOLUCIONES

159

PRCTICAS

160

ENUNCIADOS

160

SOLUCIONES

164

GLOSARIO

165

ASP.Net

TEMA 1. CARACTERSTICAS GENERALES DE ASP .NET


LECCIN 1. INTRODUCCIN AL .NET FRAMEWORK

1. CONCEPTOS GENERALES DE .NET FRAME WORK

La idea central detrs de la plataforma .NET es la de servicio. Ms concretamente


software como servicio y de

cmo construir, inst alar, consumir, integrar

agregar (en federaciones) estos servicios para que p uedan ser acce didos mediante
Internet. Esto es posib le debido a que tenemos la infraestructura de comunicacin
global que es Internet cada vez ms rpida y a un costo cada vez menor y adems,
a la capacid ad de los procesadores que co ntina incrementndose ao tras ao . El
usuario de Internet puede con un explorad or de Interne t no solamente acced er a
contenido como texto, imgenes

o sonido , tambin puede hacer uso de servicios

Web. Estos son los bloques de construccin o componentes sobre los cuales se basa
el modelo de computacin distribuida en

Internet. La plataforma .NET

permite usar Internet y su capacidad de di stribucin para que los usuarios accedan
desde cualquier disp

ositivo, en cualquier sistema

operativo

y lugar a la

funcionalidad que los servicios Web proveen.


El

objetivo

de

la

plataforma

.NET

es

simplificar

el

desarrollo

de

aplicaciones. Provee las herramientas y tecnolog as para transfor mar a Inter net
en una plataforma de computaci

n distri buida en gra n escala. Es ta plataforma

adems soporta los estndares sobre los cuales se basan los servicios Web

.NET Fram ework contiene dos compon

entes principales: Common Language

Runtime y la biblioteca de clases de .NET Framework.


El Common Language Runtime (CLR) provee

lo que se

llama

cdigo

administrado, es decir, un entorno que provee servicios automticos al cdigo que


se ejecuta. Los servicios son variados:

Cargador de Clases: Permite cargar en memoria las clases.

Compilador MSIL a nativo: Tr ansforma cdigo intermedio de al to ni vel


independiente del hardware que lo ejec uta a cdigo de mquina propio de l
dispositivo que lo ejecuta.

ASP.Net

Administrador de Cdigo: Coordina toda la operac in de los distintos


subsistemas del Common Language Runtime.

Recolector de Basura: Elimina de memoria objetos no utilizados.

Motor de Seguridad: Administra la seguridad del cdigo que se ejecuta


recibiendo grados de

confianza diferentes, d ependiendo de u na s erie de

factores co mo su origen, este

co ntrol d e seguridad implica

que un

componente administrado pueda ser capa z o no de realizar operaciones de


acceso a archivos al Registro y otras funciones delicadas.

Motor de Depuracin: Permite hacer un seguimiento

de la ejecucin de l

cdigo an cuando se utilicen lenguajes distintos.

Verificador de Tipos: C ontrola qu e las v ariables de la aplicac in usen e l


rea de memoria que tienen asignado.

Administrador de Excepciones: Maneja los err

ores que se producen

durante la ejecucin del cdigo.

Soporte de multiproceso (threads): Permite e jecutar cdigo en forma


paralela.

Empaquetador de COM: Coordina la comunicaci n con los componentes


COM para que puedan ser usados por el .NET Framework.

Soporte de la Biblioteca de Clases Base: Interfase con las clas es bas e


del .NET Framework.

Implementacin de una infraestructura de comprobacin de tipos y


cdigo llamada CTS, que garantiza que todo el cd

igo administ rado es

autodescriptivo, es decir, que el c digo administrado puede usar otros tipos


e instancias administrados y a la vez mantener la fidelid ad y seg uridad de
sus propios tipos.

La librera de clases base son las clases sob re las cuales se construyen todas las
dems clases que utilizan los pro gramas de Visual Studio .N ET. La clase madre de
todas es System. A partir de ella por un mec anismo llamado herencia de clases,
se construyen las dems clases.
Debido a q ue en la

librera de c lases ba se hay muchas clases, s e utiliza pa ra

identificarlas un mecanismo llamado espacio de nombres (namespace). La parte


del nombre de la clase que se encuentra a la derecha del ltimo punto se llama tipo
de la clase. Todo lo que resta se llama espacio de nombres.
La librera de clases base es independiente del lenguaje. Permite el uso y la
depuracin de otros lenguajes. Es extensible ya que por el mecanismo de herencia

ASP.Net

el usuari o puede crear nuevas clases que u san l as cl ases base como "l adrillos".
Tambin el u suario puede incorporarlas en bibliotecas para su utilizacin posterior.
Es segura ya que es posible permitir o

restringir su uso por med io de distint os

mecanismos de seguridad.
La plataforma .NET organiza t oda la f uncionalidad de l sist ema o perativo en u n
espacio de nombres jerrquico de forma que a la hora de programar resulta
bastante sencillo encontrar lo que se necesita.
Para ello, el Framework posee un sistema de tipos comn, denominado
Common Type System (CTS). Este sistema permite qu e el programador pueda
interactuar los tipos que se incluyen en el propio Framework (biblioteca de clases
de .Net) con los creados por l mismo ( clases). De esta forma se aprovechan l as
ventajas pr opias de la programacin or ientada a objetos, como la herencia de
clases pred efinidas para crear nuevas cl

ases, o el polimorfismo d

e clases pa ra

modificar o ampliar funcionalidades de clases ya existentes.


La bibliotec a de clases de .Net Framewor k incluye, entre otro s, tres componentes
clave:

ASP.NET para construir aplicaciones y servicios Web.

Windows Forms para desarrollar interfaces de usuario.

ADO.NET para conectar las aplicaciones a bases de datos.

2. ASPECTOS GENERALES DE ASP. NET


ASP.NET e s un modelo de

desarrollo Web unificado que incluye los serv icios

necesarios para crear aplicaciones Web empresariales con el c digo mnimo. Forma
parte de .NET Framework y al c odificar las aplicaciones ASP.NET se tiene acceso
a las clases en .NET Framework. El cdigo de las aplicaci ones puede escribirse en
cualquier le nguaje compat ible con el Common Language Runtime (CLR), en tre
ellos Microsoft Visual Basic, C#, JScript .NET y J#. E stos lenguajes permiten
desarrollar aplicaciones ASP.NET que se benefician de todos los componentes de la
plataforma .NET.
En este curso utilizaremos el lenguaje Visual Basic 2008.
ASP.NET incluye las siguientes caractersticas:

ASP.Net

Marco de trabajo de pgina y controles


Es un marco de trabaj o de progra macin que se e jecuta en un servidor Web
para generar y representar de

forma dinmica pginas Web ASP.NET. Las

pginas Web ASP.N ET se pueden solic itar a cualquier ex plorador o dispositivo


del c liente y ASP.NE T representa el ma rcado (como HTML) al exp lorador que
realiz la solicitud. Por lo general, se puede utilizar la misma pgina para varios
exploradores, porq ue ASP.NET represen ta el marcado adecuado para el
explorador que realiza la so licitud. Aunque tambin se puede disear una
pgina Web ASP.N ET para ejecutarse

en un explorador determ inado, como

Microsoft Internet Explorer 6, y aprovechar as todas las caractersticas de es e


explorador. Es compa tible con los

controles mviles de los disposit

preparados para trabajar en Web como

ivos

telfonos celulares, PC porttiles

asistentes digitales personales (PDA).


Las pginas Web ASP.NET estn compl etamente orientadas a objetos y se
puede trabajar con elementos HTML que usen propiedades, mtodos y eventos.
Quita los detalles de implementacin relacionados con la separacin de cliente y
servidor in herente a la s aplicac iones Web presen tando un modelo unificado
que responde a los ev entos de los clientes e n el cd igo que se ej ecuta en el
servidor. El marco de trabajo mantiene automticamente el estado de la
pgina y de los controles que contenga durante el ciclo vital de
procesamiento de la pgina.
Permite encapsular la funcionalidad comn de la interfaz de usuario en controles
fciles de u sar y reut ilizables. L os con troles se escriben una vez,

se pueden

utilizar en varias pgin as y se in tegran en la pgina Web ASP.NET en la que


se colocan durante la representacin.
Proporciona funciones para contro lar la apariencia y el funci onamiento general
de los s itios Web a travs de temas y mscaras. Se pueden definir temas y
mscaras y, a continuacin, aplicarlos en las pginas o controles.
Puede defi nir una p gina pri ncipal ni ca q

ue de fine el di seo y el

comportamiento estn dar deseados pa ra todas las pginas (o un grupo de


pginas) de la aplicac in. A continuacin, se pueden crear pginas de contenido
individuales con el contenido especfico de la pgina que se desee mostrar.

ASP.Net

Compilador de ASP.NET
Compila todo el cdigo de ASP.NET, lo que permite el establecimiento inflexible
de tipos, las optimiz

aciones de rendim iento y el

enlace en tiempo d

compilacin, entre otras ventajas. Una ve z q ue se ha c ompilado el cdigo, el


Common Language Runtime compila una vez ms

cdigo de ASP.N ET e n

cdigo nativo, lo que permite un mayor rendimiento.


ASP.NET in cluye u n compilador que compil ar todos los componentes de la
aplicacin, in cluidas la s pgi nas y los contr oles, en un
entorno de host de

ensamblado que el

ASP.NET puede u tilizar a con tinuacin para at ender las

solicitudes del usuario.

Infraestructura de seguridad
Adems de las caractersticas de s eguridad de .NET , ASP.NET proporciona una
infraestructura de seguridad avanzada para autenticar y autorizar el acceso d e
los usuarios y realiza

r otras tareas

relacionadas con la seguridad. Puede

autenticar usuarios con l a autenti cacin de Wi ndows s uministrada por IIS o


puede admi nistrar la autenti cacin con s u p ropia base de datos de usuari

utilizando l a au tenticacin media nte f ormularios ASP .NET y la su scripcin


ASP.NET. Adems, p uede admini strar l a autorizacin a las capacidades

informacin de su aplicacin Web median te los grupos de Windows o su propia


base de d

atos de f

ASP.NET. Resu lta

unciones person alizada u tilizando las


fcil qu itar, agregar

funciones de

o reemplazar estos esquem

as

dependiendo de las necesidades de la aplicacin.


ASP.NET siempre se e jecuta con una identidad particular de Windows de modo
que puede asegurar su aplicac in utilizando las capacidades de Win dows como,
por ejemplo, las listas de control de acce so (ACL) de NTFS, permisos de la base
de datos, etc.

ASP.Net

Funciones de administracin de estado


ASP.NET proporciona funcionalida d de administracin de estado intrnseca
que permit e almacen ar in formacin en tre las solic itudes de pgin a, como l a
informacin de cl ientes o e l contenido del carro de la compra. Puede guardar y
administrar in formacin especf ica de la ap

licacin, especf ica de la ses in,

especfica d e la pgina, es pecfica del usuari o y definid a por el desarrollador .


Esta informacin puede ser independiente de cualquier control de la pgina.
Ofrece funciones de estado distribuidas, lo que le permite

administrar

informacin de est ado en m ltiples in stancias de la misma apl

icacin en un

equipo o en varios.

Configuracin de la aplicacin
Las aplicaciones ASP.NET utilizan un sistema de con figuracin que le perm ite
definir valores de confi guracin para su servidor Web, para un sitio Web o para
aplicaciones in dividuales. P uede crear v alores de co nfiguracin cu ando se
implementan est as aplicac iones y pu ede agregar o r

evisar los valores d e

configuracin en cual quier momento con un i mpacto mnimo en ap licaciones y


servidores Web de operaciones. Los valores de configuracin de

ASP.NET se

almacenan en archivos basados en la tecnologa XML. Dado que estos archivos


XML son ar chivos de texto ASCII, es f cil realizar cambios de con figuracin a
sus aplicaciones Web. Puede extender

el esquema de configuracin para

satisfacer sus requisitos.

Supervisin de estado y caractersticas de rendimiento


Estas caractersticas que permiten supervis ar el estado y el rendim iento de la s
aplicaciones proporcion ando in formacin sobre eventos clave qu e n os d an la
informacin sobre el estado de una aplica cin y sobre las condiciones de error.
Estos eventos muestran una com binacin de diagnstic os y caractersticas d e
supervisin, a la v ez qu e proporcion an un elevado grado de flexibilidad en lo
que respecta a lo que se registra y cmo.
ASP.NET a dmite dos grupos de contadores de ren dimiento a los qu e pu eden
obtener acceso las aplicaciones:

ASP.Net

El grupo de contadores de rendimiento del sistema

El grupo de contadores de rendimiento de la aplicacin

Capacidad de depuracin
Se aprovecha la infraestructura

de de puracin en tiempo de ejecucin par

permitir la depuracin entre lenguajes


objetos administrados como
lenguajes compat ibles con el

y equipos. Se pueden depurar tanto

no administrados, as como

todos los

Common Language Runtime (CLR) y

los

lenguajes de script.
Adems, el marco de

trabajo de pginas ASP.NET proporciona un modo de

seguimiento qu e permit e in sertar men sajes de in strumentalizacin en las


pginas Web.

Marco de trabajo de servicios Web XML


ASP.NET es compatible con los servicios Web XML. Un servicio Web XML es
un compo nente que i ncluye f uncionalidad de empresa que per

mite a las

aplicaciones intercambiar informacin entre firewalls utilizando estndares como


los serv icios de men sajera HTTP y XML. Los servicios Web XML no estn
relacionados con ninguna tecnologa de componentes ni con ninguna convencin
de llamada a objetos en concreto. Como resultado, pueden obtener acceso a los
servicios Web XML los programas escritos en

cualquier l enguaje, que use n

cualquier modelo de componentes y se ejecuten en cualquier sistema operativo.

Entorno de host extensible y administracin del ciclo de vida de las


aplicaciones
Incluye un entorno d e host ext ensible que control a el ci clo de v ida de una
aplicacin desde el mo mento en que un usuario cualquiera tiene acceso a un
recurso (como una pgina) en la aplicac in hasta el mo mento en que se cierra
la ap licacin. Aunq ue se basa en un servidor Web (IIS) como un host de la
aplicacin, ASP.NET proporciona gran parte de la propia funcionalidad de h ost.
La arquitectura de ASP.NET permit e respo nder a los eventos de aplicac in y
crear controladores y mdulos HTTP personalizados.

ASP.Net

3. ENTORNO VISUAL STUDIO .NET Y VISUAL WEB DEVELOPER


3.1 VISUAL STUDIO
El entorno de desarrollo (

Integrated Development Environment - IDE) de

Visual Studio 2008 es el resultado de la evolucin de los IDEs de Microsoft, recoge


todas las herramientas para desarrollar una

amplia gama de tipo s d e aplicaciones

y/o soluciones.
Visual Studio 2008 se presenta en varias versiones:

Express

Standard

Professional

Team System

La primera vez que se ejecuta Visual Studio 2008 aparece una ventana splash un
momento antes de que se seleccione las op ciones de conf iguracin del entorno por
defecto. Como se puede trabajar con va rios lenguajes y tecnologas en un mi smo
IDE, ste debe contar

con varias opciones que permita trabajar marcando las

diferencias en la manera de desarrollar.


Normalmente al principio se deja la opcin Configuracin general de desarrollo
- General Development Settings.
Dependiendo de l a con figuracin del entorn o cuando se haga clic en el botn de
Iniciar Visual Studio nos saldr una ventana en l a que se informa que entorno
de desarrollo se ha configurado. Una vez realizado esto Visual Studio 2008 se abrir
y podremos empezar a trabajar.
La vista general del entorno de Visual Studio 2008 es la siguiente:

ASP.Net

Figura 3.1
De forma genrica los mens y barra de herramientas estn posicionados arriba del
todo y las de seleccin de

subventanas o paneles aparecen a la derec

ha e

izquierda del rea de la ventana principal. El centro se reserva para el espacio del
editor principal, sin embargo al abrir un fichero de cdigo, un documento XML, un
formulario o cualquier otro fichero, aparecern dentro de este espacio central.
La barra de mens nos permitir acceder a

la ma yora de las opciones que

controlan el entorno de desarrollo. Los mens y los comandos trabaj an segn una
serie de r eglas estndar utilizadas en todos los programas basados en Windows; y
podremos acceder a ellos utilizando el teclado o el ratn.
Justo debajo de

la barra

de mens se encuentra la

Estndar, un conju nto de botones que fu

barra de herramientas

ncionan como atajos

para ejecutar

opciones y controlar el entorno de desarro llo de Visu al S tudio. E n la part e inferior


de la pan talla se

encuentra la barra

de t areas de

Windows, c on esta barra

podremos conmutar e ntre distintos compon entes de Visual Studio .NET

y para

activar otros programas de Windows.


Por cada fic hero que se abra, se crear una pestaa de tal manera que se pueda
tener a la vista todos los objetos abiertos.


En Visual Studio 2008 los prog

ramas qu e se encuentran en

ASP.Net
desarrollo se

denominan soluciones porque contienen varios componentes individuales, y no un


nico archivo.
Se pueden crear o abrir 2 tipos de soluciones y una opci n para agregar archivos a
esas soluciones

Crear/abrir Proyecto (VER figura 3.2)

Figura 3.2

10

Crear/abrir Sito web (Ver figura 3.3)

Figura 3.3

Crear/abrir Archivo (VER Figura 3.4)

Figura 3.4

11

ASP.Net

ASP.Net

A pesar de tener unas caractersticas generales el aspecto puede variar ligeramente


dependiendo del t ipo de

solucin que de seemos crear o abrir.

La diferencia

principal es el Explorador de soluciones caso de se leccionar un proyecto s e


visualizara de la siguiente manera.

Figura 3.5

Si seleccion amos Sitio Web el aspecto del

Explorador de soluciones ser el

siguiente.
En cualquier caso se p odr ir aadiendo tantos
para n uestra aplicac in qu e se irn

a adiendo a la ven

Soluciones

Figura 3.6

12

archivos como sean necesarios


ta del

Explorador de

ASP.Net

Desde esta ventana se controlar la situacin de la solucin y sus proyectos en todo


momento. E n ella se

in cluye t odos lo s ob jetos que tiene la

so lucin, como

proyectos, formularios, mdulos, clases, referencias del servicio Web


Pulsando el botn der echo del ratn sobre la el

tipo de objeto que hayamos

abierto Web Application o Web Site se podr acceder a las princ ipales acciones
a realizar sobre la solucin.

Figura 3.7
Debajo de la venta na del Explorador de soluciones se encuentra la Ventana
de propiedades en ella se podrn consultar o modificar las caractersticas o las
definiciones de propied ades de los elementos que componen la interfaz de usua rio
de un formulario.
Una definicin de propiedad es una cualidad de uno de los objetos contenidos en su
interfaz de usuario. Por ejemplo, se podr modificar la fuente, color , tamao y en
general las caractersticas por alguna ma
podrn modificar el c

omportamiento o

nera llamarlas fsica , pero tambi n se


apariencia de

un elemento. Se puede

modificar la definicin de las propiedades utilizando la ventana Propiedades, cuando

13

ASP.Net

se est cre ando la interfaz de usuario, o se podr agregar cdigo en el programa


utilizando el Editor de cdigo para modificar una o ms def iniciones de propiedades
durante la ejecucin del programa.
La ventana Propiedades conti ene un cua dro de lista desplegable denominado
Objeto que part iculariza t odos los elemen tos ( objetos) de la in terfaz de usuario
contenidos en e l f ormulario; la v entana t ambin l ista las

definiciones de

propiedades q ue se podrn mo dificar para cada uno de los objetos (podr hacer
clic en uno de

los dos botones disponib les para ver

las propiedades ordenadas

alfabticamente o por categoras).


El Cuadro de herramientas contiene la mayora de los controles que se utilizarn
para generar aplicacio nes. Existe n varias co lecciones de controle s en el cuadro de
herramientas y se p

odr acceder a toda s ellas s in ms que hacer clic en las

pestaas que se puede ver dentro del Cuadro de herramientas.


NOTA 1: Si ahora no ves el C

uadro de herramientas, seleccion a el comando

Cuadro de herramientas del men Ver o pulsa el icono del martillo.


NOTA 2: Hay que tener en cuenta que si la solucin seleccionada en un Sitio Web
no tiene interfaz grfica por lo tanto el cuadro de herramientas aparecer vaco.

Figura 3.8
El cuadro de herramientas normalmente est visible s iempre que otra ventana
conocida como Diseador de Pginas, que es bsicamente un lienzo en blanco

14

ASP.Net

que representa la interfaz de usuario de la aplicacin, est tambin visible. En esta


ventana se disearn todos los controles que conformarn la pgina.
Las pginas asp.net son archivos formados por el

nombre de

la pgina y

la

extensin aspx. Por defecto al abri r una sol ucin ti po Aplicacin Web se crear
una pgina llamada

Default.aspx, est a pgina n os serv ir co mo in icio de

nuestra aplicacin. En ella se v isualizar tanto el cd igo que escribamos como el


diseo de la pgina tal y como aparece en la figura 3.9.

Figura 3.9

Este mensaje ( figura 3.10) aparece porque para ejecutar las pg inas se necesita
un Servidor Web, co mo IIS (Internet Information Server) que deberamos
tener instalado, si nuestro sistema op erativo es 2000, 2003, 2008, XP (No en la
versin Home) o Vista este servidor estar incluido.
Si todava no hemos conectado el sitio web que estamos desarrollando con el IIS...
cmo podemos ejecutar las pginas? Recuer da que no se pueden hacer doble clic
en ellas en el explorador de archivos sino que deben ejecutarse en un servidor web.
La solucin es que el entorno de desarrollo incorpora un pequeo servidor web para
la depuracin y la ejecucin de las pginas.
No se puede utilizar como servidor web, es slo para la prueba de las
pginas, as no tenemos que moverlas a un servidor IIS para probarlas.

15

ASP.Net

Lo que realmente significa este mensaje de: http://localhost:4450/Website2 Es que


el servidor es "localhost" q ue e s una pal abra cl ave que apunta a nuestro pro pio
equipo y ejecuta el servidor web en el

puerto 4450 de ah loca lhost:4450. Aunque

los servidores web se ejecutan en el puerto 80 pero como este es uno de pruebas lo
ejecuta en ese puerto, no importa ya que

es para probar las p

ginas, no es

necesario configurar nada de este servi dor web porque lo gestiona todo el entorno
de desarrollo.

Figura 3.10
Al depurar la ap licacin podemos encont rarnos con otro problem a ya que por
defecto la depuracin

en el Internet Explorer no est activada, por lo que

es

posible que al ejecutar la pgina salga el siguiente mensaje:

Figura 3.11
Para solu cionarlo n os iremos a

las Opcio nes del In ternet Ex plorer del m en

herramientas y seleccionamos la solapa "Opciones Avanzadas":


Desmarcamos la opci

n de "D

eshabilitar la depu racin de script

s ( Internet

Explorer) y re iniciamos el navegador. C ancelamos la ejecucin d e la pgina del


mensaje anterior para que coja es tos cambios y le volve mos a puls ar al botn d e
depuracin para ejecutar la pgina.

16

ASP.Net

Figura 3.12
Hay numer osas venta nas adi cionales en el

IDE, cad a una para

una tarea

de

programacin concreta. Algunas de las ms comunes se muestran a continuacin.

La ventana Lista de errores (figura 3.13) aparece en la parte inferior de l


IDE si se escribe cd igo incorrecto o ap arecen otros err ores en tie mpo de
diseo.

17

ASP.Net

Figura 3.13

La v entana d el Explorador de Servidores (figura 3.14) se u tiliza para


examinar los servidor es tanto de

Base de datos como Web a los qu

tenemos conexin.

Figura 3.14

18

ASP.Net

La ventana de Resultados (figura 3.15), en testa venta se podr ver lo s


pasos de ejecucin al depurar la pgina asp.

Figura 3.15

3.2 VISUAL WEB DEVELOPER

Visual Web Devel

oper es un

entorno de desarrollo completo para crear

aplicaciones Web ASP .NET (den ominadas si mplemente " sitios We b"). Visu al Web
Developer tiene las caractersticas siguientes:

Diseo de pginas Web

Un editor de pginas Web eficaz que incl uye la

edicin WYSIWYG (What You See Is What You Get) y el modo de


edicin HTML con IntelliSense y validacin.

Caractersticas del diseo de pginas


con pginas principales y apariencia

La disposicin de sit ios uniforme

de pgi nas uni forme con temas y

mscaras.

Edicin de cdigo

Un editor de cdigo que le permite escribir cdigo para

las pginas Web dinmicas en Visual Bas ic o C#. El editor de cdigo incluye
coloracin para la sintaxis e IntelliSense.

Depuracin

Un dep urador que le ayud a a encontr ar errores en sus

programas.

Controles

Un conjunto extenso d e controles de servidor Web de ASP.N ET

que incorpora mucha de la funcionalidad necesaria para crear sitios Web.

Acceso a datos

Compatibilidad para mostrar y editar datos en las pginas

Web. Los datos puede n estar en una variedad de almacenes de datos, entre
los que se incluyen ba ses de datos o ar chivos XML. En muchos casos, puede

19

ASP.Net

agregar la posibilidad de ver los datos y de editarlos en sus pginas Web sin
necesidad de escribir ningn cdigo.

Seguridad y personalizacin

Servicios de aplicaciones integradas que le

permiten agregar suscripciones para la

seguridad de inicio de sesin en el

sitio, propi edades de perf iles q ue le permit an mant ener la in formacin


especfica de los usuarios y otras caractersticas, la mayora de las cuales no
requiere ningn cdigo.

Visual Web Developer proporciona un entorno muy bueno para generar sitios Web y
publicarlos en un sitio de hospedaje ya que con

las herra mientas de desarrollo

que proporciona se puede desarrollar pginas Web ASP.NET en tu propio equipo.


Tambin i ncluye un servidor Web local que proporciona todas las caracterstic as
necesarias para probar y depurar pgi

nas Web ASP.N ET, sin nec esidad de que

estn instalados los Internet Information Services (IIS).


Una vez que el sitio web est listo se podr publicar en el equipo host utilizando la
herramienta Copiar W eb integrada, que tran sfiere los archivos cua ndo se quiera
compartir c on los dems. Asimis mo, se puede precompilar e implementar un sitio
Web mediante el comando Generar sitio Web que ejecuta el compilado r en todo
el sitio Web (no slo en los archivos de cdigo) y genera un diseo de sitio Web que
se puede implementar en un servidor de

produccin, e ste componente no est

disponible en la versin Express.


Por ltimo decir que se pu

ede aprovechar la compa

Protocolo de transferencia de archivos (FTP). Si


de Visual Web Developer,

tibilidad integrada con el


se u tiliza las f unciones FTP

nos podemos conectar direct amente al equipo host y

luego crear y editar archivos en otro servidor.


Al ejecutar Visual Web Developer 2.008 en e l ltimo punto de la instalacin es e l
registro del programa:

20

ASP.Net

Figura 3.16
Nos registramos para obtener la clav e y nos encontr aremos des pus con el
entorno de desarrollo:

Pantalla inicial (figura 3.17)

Figura 3.17

21

ASP.Net

Entorno desarrollo (figura 3.18)

Figura 3.18
Como se puede comprobar este entorno es
Visual Studio. Si quis iramos crear un

muy parecido al en torno genrico de

sitio web ASP.NET se seleccionara

esa

opcin y nos f ijaremos qu e debajo se mu estra el len guaje qu e vamos a u tilizar


"Visual Basic" y "Location" indica que es "File System" es decir, una carpeta
normal de nuestro disco duro.

22

ASP.Net

LECCION 2. INFRAESTRUCTURA DE ASP .NET


En esta leccin nos adentraremos en

las principales cara

ctersticas de

la

programacin Web mediante ASP.NET, conociendo toda la infraestructura de un


sitio Web y fami

liarizndonos con trmi

nos tan importantes

como es la

administracin de estados y el enrutamiento.

1. MDULOS HTTP Y CONTROLADORES HTTP


Los mdulos y los controladores HTTP

forman una parte integrante de la

arquitectura de ASP.NET.
En el ciclo de depuracin de una pgina ASP hay varios mdulos HTTP que la
procesan (por ejemp lo, el mdulo de au
despus es procesado por un

tenticacin y el mdulo

nico controlador HTTP, y por

de sesin) y

ltimo cuando el

controlador ya ha proc esado la solicitud, sta es devuelta a travs de los mdulos


HTTP.
1.1.

MODULOS HTTP

Los mdulos se llama n antes y despus de que se ejecute el controlador. Los


mdulos permit en a los desa

rrolladores interceptar cada so

licitud individual,

participar en ella o m odificarla e imp lementan la interfaz IHttpModule, que se


encuentra en el espacio de nombres System.Web.
Entre los usos habituales de los mdulos HTTP se incluyen los siguientes:

Seguridad

Dado que se pueden examinar

mdulo HTTP puede

realizar una au

las so licitudes en trantes, u n

tenticacin person alizada u ot ras

comprobaciones de seguridad antes de qu e se llame a la pgina, al servicio


web XM L o al con

trolador solic itado. En el modo integrado de Internet

Information Services (IIS) 7.0

, se puede extender la aute nticacin de

formularios a todos los tipos de contenido de una aplicacin.

23

Estadstica y registro

ASP.Net

Como en cada solic itud se llama a mdu los HT TP,

se puede recopilar estadsticas e informacin de registro sobre las solicitudes


en un mdulo centralizado, en lugar de hacerlo en pginas individuales.

Encabezados o pies personalizados


respuesta de salida,

Ya que es p

osible mod ificar la

se puede insert ar cont enido, como in formacin d e

encabezado personalizada, en cada respuesta de pgina o servicio web XML.

Eventos disponibles

Una clase HttpApplication proporciona una serie de eventos con los que los
mdulos se pueden sincronizar.
Los evento s de la lis
sincronicen en ca

ta de abajo est

da solicitud.

n di sponibles para que los mdulos se

(Estos

eventos

se

muestran

en

orden

secuencial)

BeginRequest: se h a in iciado l a solic itud. Si se necesita hacer


principio de una solic

algo al

itud (por ejempl o, mostrar titulares de anuncio al

principio de cada pgina), sincronizamos este evento.

AuthenticateRequest: Si desea mos u tilizar n uestro propio esquema de


autenticacin personalizado (por ejemplo, buscar un usuario en una base
de datos para validar la contrasea), crearemos un m dulo que sincronice
este evento y autentique al usuario como nosotros queramos.

AuthorizeRequest: este evento se usa inte

rnamente para imp lementar

mecanismos de autorizacin (por ejemp lo, para alm acenar las listas de
control de acceso (ACL) en una base de datos en lugar de en el sistema de
archivos). Aunque se puede invalidar este evento, no es muy conveniente.

ResolveRequestCache: este evento determina

si una pgina s e pued e

servir desde la cach de salida. Si queremos escribir nuestro propio mdulo


de almacenamiento en cach, por ejemplo, crear una cach basada en
archivos en lugar de una cach de me

moria, sincronizar emos este evento

para determinar si servir la pgina desde la cach.

AcquireRequestState: el estado de la sesin se obtiene del almacn d e


estados. Si queremos crear nuestro propio mdulo de administracin de
estados, sincronice este evento para obtene r el estado de la sesin de su
almacn de estados.

24

ASP.Net

PreRequestHandlerExecute: este evento se produce

antes de que se

ejecute el controlador HTTP.

PostRequestHandlerExecute: este evento se produce despus de que se


ejecute el controlador HTTP.

ReleaseRequestState: el estado de la sesin se vuelve a almacenar en e l


almacn de estados. Si estamos creando

un mdulo de estado de

sesin personalizado, deberemos almacenar el

estado de nuevo en el

almacn de estado.

UpdateRequestCache: este evento escribe el r

esultado en la cach d

mdulo de cach personalizado,

resultados. Si estamos creando un


escribiremos el resultado en la cach.

EndRequest: la solicitud se ha completado. Puede ser conveniente crear un


mdulo de depuracin que recopile informacin a travs de l a solicitud y,
despus, la escriba en la pgina.

Los siguientes eventos estn disponibles

para que los mdulos se sincronicen en

cada t ransmisin de la solic itud. (El orden de estos eventos no se puede


predecir.)

PreSendRequestHeaders: este e vento se produce antes de que se enven


los encabezados. Si queremos agrega r encabezados adicionales, podemos
sincronizar este evento desde un mdulo personalizado.

PreSendRequestContent: este evento ocurre cuando se llama a l mtodo


Response.Flush. Si qu

eremos agregar con

tenido adicional, podemos

sincronizar este evento desde un mdulo personalizado.

Error: este evento ocurre cuando se pr oduce una excepci n no contr olada.
Si querem os escrib ir un

mdulo

de

controladores

de

error

personalizado, podemos sincronizar este evento.

Configurar mdulos HTTP


El controlador de la seccin de configuracin <httpModules> es responsable de
configurar los mdu los HT TP den tro de u na aplicac in. Se pu ede declarar en l os
equipos, lo s sit ios o las aplicac iones. Ut ilizaremos la s iguiente sin taxis para el
controlador de la seccin <httpModules>:

25

<httpModules> <add type= "[CO

ASP.Net

M+ Class], [A

ssembly]" n ame= "[ModuleName]" / > <re move

type="[COM+ Class], [Assembly]" name="[ModuleName]" /> <clear /> </httpModules>

Crear mdulos HTTP personalizados

El proceso general para escribir un mdulo HTTP es el siguiente:

Crearemos una clase que implemente la interfaz IHttpModule.

Escribiremos un controlador para el mtodo Init. El mtodo de inicializacin


debe in icializar e l md ulo y rea lizar la su scripcin a cu alquier ev ento de
aplicacin que necesite. Por ejemplo, si desea anexar algn elemento a las
respuestas, podra realizar la suscripcin al

evento EndRequest. Si desea

aplicar lgica de autenticacin personalizada, podra realizar la suscripcin al


evento AuthenticateRequest.

Escribiremos cdigo para los eventos a los que nos hayamos suscrito.

Opcionalmente, implementaremos el mtodo Dispose si el mdulo requiere


limpieza.

En nuestro sitio Web a adiremos un nuevo elemento de tipo Clase con


extensin .vb si utilizamos Visual Basic o .cs si utilizamos C# que se aadir
en la carpeta App_Code.

26

Imports Microsoft.VisualBasic
Imports System.Web
Public Class ModuloHolaMundo
Implements IHttpModule
Public Sub New()
End Sub
Public ReadOnly Property ModuleName() As String
Get
Return " ModuloHolaMundo "
End Get
End Property
' En la funcion Init, registramos los eventos para HttpApplication
' aadidos por nuestros manejadores.
Public Sub Init(ByVal application As HttpApplication) _
Implements IHttpModule.Init
AddHandler application.BeginRequest, _
AddressOf Me.Application_BeginRequest
AddHandler application.EndRequest, _
AddressOf Me.Application_EndRequest
End Sub
Private Sub Application_BeginRequest(ByVal source As Object, _
ByVal e As EventArgs)
' Creamos los objetos HttpApplication y HttpContext para acceder
' a las propiedades request y response.
Dim application As HttpApplication = DirectCast(source, _
HttpApplication)
Dim context As HttpContext = application.Context
Dim filePath As String = context.Request.FilePath
Dim fileExtension As String = _
VirtualPathUtility.GetExtension(filePath)
If fileExtension.Equals(".aspx") Then
context.Response.Write("<h1><font color=red>" & _
" ModuloHolaMundo: Beginning of Request" & _
"</font></h1><hr>")
End If
End Sub

Private Sub Application_EndRequest(ByVal source As Object, _

27

ASP.Net

ASP.Net

ByVal e As EventArgs)
Dim application As HttpApplication = DirectCast(source, _
HttpApplication)
Dim context As HttpContext = application.Context
Dim filePath As String = context.Request.FilePath
Dim fileExtension As String = _
VirtualPathUtility.GetExtension(filePath)
If fileExtension.Equals(".aspx") Then
context.Response.Write("<hr><h1><font color=red>" & _
" ModuloHolaMundo: End of Request</font></h1>")
End If
End Sub
Public Sub Dispose() Implements System.Web.IHttpModule.Dispose
End Sub
End Class

Guardamos y cerramos el arch

ivo de clase y en el men

Generar

seleccionaremos Generar Sitio Web

Registramos el mdu lo en el archivo Web.config. Si an no te nemos un


archivo web.config en el sit io web, lo crearemos bajo la raz del sitio y
agregaremos el siguiente cdigo al archivo Web.config:
<configuration>
<system.web>
<httpModules> <add name="NombreModulo" type=" NombreModulo "/>

</httpModules>

</system.web>
</configuration>

Este cdigo registrar el mdulo con el nombre de la clase y el nombre del


mdulo.

28

1.2

ASP.Net

CONTROLADORES HTTP

Los controladores se usan para procesar solic itudes de extremos individuales,


permiten a ASP.NE T Framework procesar

direcciones URL HTTP indiv

iduales o

grupos de extensiones URL dentro de una aplicacin.


A diferencia de los mdulos, slo se usa un controlador para procesar una solicitud.
Todos los c ontroladores implementan la interfaz IHttpHandler, que se encuentra
en el espa cio de no mbres System.Web. Los contr oladores s on ligeramente
Interfaz de programacin de aplicaciones

parecidos a las extensiones de la

para servidores de Internet (ISAPI).


El controlador ms comn es el de la pgina ASP.NET que procesa archivos
.aspx. Cuando los usuarios solicitan un archivo .aspx, la pgina procesa la solic itud
a travs del controlador de pg

inas. Ex isten otros controladores integrados en

ASP.NET

CONTROLADOR

DESCRIPCIN

Controlador
pginas

de Controlador HTTP pr

edeterminado para todas las

ASP.NET pginas ASP.NET.

(*.aspx)
Controlador
servicios

de Controlador HTTP pred eterminado para las p ginas de


Web servicios

(*.asmx)
Controlador

web creadas como archivos .asmx en

ASP.NET.
web El controlador HTTP

genrico (* .ashx)

predeterminado para todos los

controladores web qu e no ti enen ni nguna interfaz de


usuario y que incluyen la directiva @ WebHandler.

Controlador

de Controlador que muestra la informacin de seguimiento

seguimiento

de la pgina actual. Para obtener informacin detallada,

(trace.axd)

vea Cmo: Ver informacin de seguimiento de ASP.NET


con el visor de seguimiento.

29

ASP.Net

Configurar controladores HTTP

El controlador de la seccin de configuracin <httpHandlers> es responsable


de asignar las direc

ciones URL entrantes para las clases

IHttpHandlerFactory. Se puede declar

ar en los

IHttpHandler o

equipos, los sitios o

las

aplicaciones. Los subdirectorios heredan estas opciones.


Los administradores usan la

directiva de la etiqueta

<add> para confi gurar l a

seccin <httpHandlers>. Las directivas <Add> se interpretan y procesan en


orden secuencial descendente. Utilizaremos la siguiente sintaxis para el controlador
de la seccin <httpHandler>:

<httpHandlers> <add verb = "[verb list]" path= "[path/wildcard]" t ype= "[COM+ Cla ss], [Assembly]"
validate= "[true/false]" />

<remo ve v erb= "[verb

list]" path = "[path/wildcard]" /> <cle

ar / >

</httpHandlers>

Crear controladores HTTP

Podemos crear nuestros propios c ontroladores HTTP que representen el resulta do


personalizado en el explorador.
Para crear un co

ntrolador HT TP pers onalizado, cr earemos una clase

que

implementa la interfaz IHttpHandler para crear un controlador sincrnico o


implementar la

interfaz

IHttpAsyncHandler

para crear un

asincrnico. L as dos in terfaces del con trolador requieren que se

controlador
implemente la

propiedad IsReusable y el mtodo ProcessRequest.

La propiedad IsReusable especifica si el objeto


objeto que realmente

IHttpHandlerFactory (el

llama a l controlador adecuado) puede colocar el

controlador en un gru po y reuti lizarlo pa ra aumentar el rendimiento. Si e l


controlador no se puede agrupar,

el generador debe crear una

nueva

instancia del controlador cada vez que se necesite.

El m todo ProcessRequest es e l responsable de procesar las solicitudes


HTTP in dividuales. E n este mt odo, se escribir el cd igo que genera el
resultado para el controlador.

30

ASP.Net

Los controladores HTTP tienen acceso al con texto de la aplicac in. E sto in cluye la
identidad d el usuario que realiza la solicitu d (si se conoce),

el estado de la

aplicacin e informacin de la sesin. Cuando se solic ita un contr olador HTTP,


ASP.NET lla ma al mt odo ProcessRequest del controlador adecu ado, el cd igo
que se escribe en este mtodo del controlador crea una respuesta, que se devuelve
al explorador que realiz la solicitud.

Controlador sncrono

Imports System.Web
Public Class ControladorHolaMundo
Implements IHttpHandler
Public Sub ProcessRequest(ByVal context As _
System.Web.HttpContext) Implements _
System.Web.IHttpHandler.ProcessRequest
Dim request As HttpRequest = context.Request
Dim response As HttpResponse = context.Response
' Este controlador es llamado cada vez que un fichero que termina
' en .sample is solicitado.
response.Write("<html>")
response.Write("<body>")
response.Write("<h1>Hola desde un controladorHTTP sncrono

personalizado.</h1>")

response.Write("</body>")
response.Write("</html>")
End Sub
Public ReadOnly Property IsReusable() As Boolean _
Implements System.Web.IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class

Controlador asncrono. Los co ntroladores HTTP asincrnicos permiten


iniciar un proceso externo, como por ejemplo una llamada a un mtodo en
un servi dor remoto, mi entras que el control ador conti na procesan do si n
esperar a q ue termine el proceso externo. D urante el procesamiento de un
controlador HT TP asin crnico, ASP .NET coloca el subproceso que
normalmente se u tilizara para el p roceso ex terno de nu evo en el gru po de
subprocesos hasta que el controlador re ciba una de volucin de llamada del

31


proceso externo.

Esto puede evitar

ASP.Net
el agrupamiento en bloques

subprocesos y mejor ar e l rendimiento ya que solo


inmediatamente un nmero

es posib le ejecutar

limitado de subprocesos. Si var

solicitan controladores HTTP sincr

de los

ios usuarios

nicos que dependan de procesos

externos, el sistema operativo puede quedarse sin subprocesos rpidamente


porque muchos estarn bloqueados y esperando un proceso externo.
En este ejemplo crear emos una clase

llamad a C ontroladorAsincHolaMundo

en el directorio App_Code
Imports Microsoft.VisualBasic
Imports System.Web
Imports System.Threading
Public Class ControladorAsincHolaMundo
Implements IHttpAsyncHandler
Public ReadOnly Property IsReusable() As Boolean Implements
System.Web.IHttpHandler.IsReusable
Get
Return False
End Get
End Property
Public Function BeginProcessRequest( _
ByVal context As System.Web.HttpContext, _
ByVal cb As System.AsyncCallback, _
ByVal extraData As Object) _
As System.IAsyncResult _
Implements System.Web.IHttpAsyncHandler.BeginProcessRequest
context.Response.Write("<p>Begin IsThreadPoolThread is " _
& Thread.CurrentThread.IsThreadPoolThread & "</p>" & vbCrLf)
Dim asynch As New AsynchOperation(cb, context, extraData)
asynch.StartAsyncWork()

Return asynch
End Function
Public Sub EndProcessRequest(ByVal result As _
System.IAsyncResult) _
Implements System.Web.IHttpAsyncHandler.EndProcessRequest
End Sub
Public Sub ProcessRequest(ByVal context _
As System.Web.HttpContext) _

32

Implements System.Web.IHttpHandler.ProcessRequest
Throw New InvalidOperationException()
End Sub
End Class
Class AsynchOperation
Implements IAsyncResult
Private _completed As Boolean
Private _state As [Object]
Private _callback As AsyncCallback
Private _context As HttpContext
ReadOnly Property IsCompleted() As Boolean _
Implements IAsyncResult.IsCompleted
Get
Return _completed
End Get
End Property
ReadOnly Property AsyncWaitHandle() As WaitHandle _
Implements IAsyncResult.AsyncWaitHandle
Get
Return Nothing
End Get
End Property
ReadOnly Property AsyncState() As [Object] _
Implements IAsyncResult.AsyncState
Get
Return _state
End Get
End Property
ReadOnly Property CompletedSynchronously() As Boolean _
Implements IAsyncResult.CompletedSynchronously
Get
Return False
End Get
End Property
Public Sub New(ByVal callback As AsyncCallback, _
ByVal context As HttpContext, _
ByVal state As [Object])
_callback = callback
_context = context
_state = state

33

ASP.Net

ASP.Net

_completed = False
End Sub
Public Sub StartAsyncWork()
ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf StartAsyncTask), Nothing)
End Sub
Private Sub StartAsyncTask(ByVal workItemState As [Object])
_context.Response.Write("<p>Completion IsThreadPoolThread is " &
Thread.CurrentThread.IsThreadPoolThread & "</p>" & vbCrLf)
_context.Response.Write("Hola mundo desde el controlador HTTP asncrono!")
_completed = True
_callback(Me)
End Sub 'StartAsyncTask
End Class 'AsynchOperation

NOTA
Si en el co ntrolador HTTP requiere el

estado de la sesin, tambi n tenemos que

implementar la interfaz IRequiresSessionState.


En ambos casos para registrar el controlador en el archivo Web.config. Si an no
tenemos un archivo web.config en el sitio web, lo crearemos bajo la raz del sitio y
agregaremos el siguiente cdigo al archivo Web.config:
<configuration>
<system.webServer>
<handlers>

<add verb="*" path="*.sample"

type="HelloWorldHandler"/>

name="HelloWorldHandler"

</handlers>

</system.webServer>
</configuration>

El ele mento de configuracin regis tra el controlador pers onalizado p or nombre d e


clase y le asigna la extensin de nombre de archivo .sample.

34

2.

ASP.Net

ADMINISTRACIN DE ESTADOS ASP.NET

Cada vez q ue la pgin a se en va al serv idor, se crea una nueva instancia de la


clase de la pgina Web. En la programacin Web tradicional, esto significa que toda
la informacin asociada a la pgina y sus controles se pierden con cada recorrido de
ida y vuelta, para poder superar esta lim itacin inherente de la programacin Web
tradicional, ASP.NET incluye varias opciones que ayudan a preservar los datos en
cada pgina y en toda la aplicacin.
Estas opciones pueden almacenarse en el cliente o en la memoria del servidor:

Cliente
o

Estado de vista

Estado de control

Campos ocultos

Cookies

Cadenas de consulta

Servidor
o

Estado de aplicacin

Estado de sesin

Propiedades de perfiles

Estado de Vista: La propiedad ViewState propo rciona un objeto d

diccionario para conservar valores entre las distintas solicitudes de una misma
pgina. ste es el mtodo predeterminado q ue la pg ina utiliza para conservar
los valores de las pr

opiedades de la

propia pgina y sus co

ntroles entre

recorridos de ida y vuelta.


Cuando se procesa la pgina, se calcula el valor de hash del estado actual de la
pgina y de l os controles en una c adena y se guarda en la pgina como campo
oculto o varios campo s ocultos si el

volumen de los da tos almacenados en la

propiedad ViewState sobrepasa el va

35

lor especifica do en la

propiedad

ASP.Net

MaxPageStateFieldLength. Cuando se vuelve a enviar la pgina al servidor,


sta an aliza la caden a de est ado de v ista du rante su in icializacin y la
informacin de las propiedades se restablece en ella.
Estado de

control: La

propiedad

ControlState

permite m antener la

informacin de las pro piedades q ue es especfica de un control y que no se


puede desactivar como ocurre con la propiedad ViewState.
Esta propiedad es til porque en ocasiones es necesario alma cenar los datos del
estado de control simplemente pa ra que un control funcione correctamente. Por
ejemplo, si ha escrito un co ntrol persona lizado con varias fichas que muestran
distintos tipos de informacin, el control debe saber la ficha que se selecciona en
los reco rridos de ida

y vuelta para qu e funci one tal y como se espera. La

propiedad ViewState se pu

ede u tilizar para este propsit

desarrolladores pueden desactivar el es

tado de vista

o, pero los

en el nivel de pgina,

interrumpiendo su control eficazmente.


Campos ocultos: ASP.NET per mite almacenar i nformacin en un

control

HiddenField, que se representa como campo oculto est ndar HTML. Un campo
oculto no est visib

le en e

l e xplorador, pero se pueden configurar sus

propiedades igual que las de un control estndar. Cuando se enva una pgina al
servidor, el contenido del campo oculto se enva en la coleccin Form de HTTP
junto con los valores de otros controles. Un campo oculto acta como repositorio
de cualquier informacin especfica de pgina que desee almacenar directamente
en la pgina.
Un control HiddenField almacena una nica variable en su propiedad Value y
se debe agregar en la pgina de

forma explcita. Para qu e los v alores de los

campos ocultos estn disponibles durante el procesamiento de la pgina, se debe


enviar med iante el mtodo POST de HTTP. Si uti liza campos ocul tos y una
pgina se procesa como respuesta a un vnculo o a un comando GET de HTTP,
los campos ocultos no estarn disp

onibles. Es fci

l que un us

uario

malintencionado vea y modi fique el cont enido de un campo oculto. No se deb e


almacenar ninguna i nformacin que sea co nfidencial o en la que

se base la

aplicacin para funcionar correctamente en un campo oculto..


Cookies: Una cookie es una cantidad pequea de da tos que se almacena en un
archivo de texto en el sistema de

archivos del cl iente o que se mant iene en l a

memoria durante la sesin del explor

ador cl iente. Contiene i nformacin

36

ASP.Net

especfica d el s itio que el servidor enva al cl iente junto con el resultado de la


pgina. Las cookies pueden ser

temporales (con fec has y horas de caducidad

especficas) o permanentes. L as cook ies s e pu eden u tilizar par a almacen ar


informacin acerca de un cliente, sesin o aplicacin especficos. Las cookies se
guardan en el dispositivo cliente y, cuando el explorador solicita una
pgina, el cliente enva la informacin de la cookie junto con la
informacin de la solicitud. El servidor puede leer la cookie y extraer su valor.
Uno de los usos tpicos es almacenar un smbolo (puede que cifrado ) que indica
que el usuario ya se ha autenti cado en la aplicac in. Hay qu e t ener en cu enta
que para tener segurid ad en nuestra pgina, el explorad or slo puede devolver
los datos al servidor que cr e la cookie, pero algunos usuarios malintencionados
cuentan con medios p ara tener acceso a

las cookies y

leer su contenido. Se

recomienda no almacenar informacin confidencial, como el nombre de usuario o


la contrasea, en una cookie. En su lugar, almacenaremos un smbolo (token)
en la cook ie que identifique al usuario y, a co ntinuacin, utilizaremos el smbolo
para buscar la informacin confidencial en el servidor
Cadenas de consulta: Una cadena de consulta es informacin que se anexa
al final d e la direccin URL de una p

gina. Un ejemplo tpico de

cadena de

consulta podra tener el siguiente aspecto:


http://www.tienda.com/listaarticulos.aspx?categoria=basica&precio=100

En la rut a URL in dicada, la caden a de c onsulta em pieza por un

signo d e

interrogacin (?) e incluye dos pares de at ributo-valor, uno de ellos se denomina


"categoria" y el otro, "precio".
Las cadena s de cons ulta proporcionan una manera senci lla pero limitada de
mantener la informacin de estado. Por eje

mplo, es una manera sencilla d

pasar informacin de una pgina a otra, como pasar u n cdigo de producto de


una pgina a otra dond e se procesar. Sin embargo, en algunos exploradores y
dispositivos de cl iente la lon gitud de la d ireccin URL t iene u na l imitacin de
2083 caracteres. Para que los valores

de las cadenas de consulta estn

disponibles durante el procesamiento de

la pgina, se debe enviar la pgina

utilizando el mtodo GET de HTTP.


Es fci l mani pular l a informacin que se pasa entre una

pgi na a otra con l as

cadenas d e consul tas, as que l a mejor opci n es no poner i


importante o confidencial.

37

nformacin

ASP.Net

Estado de aplicacin: ASP.NET permite guardar valores utilizando el estado de


clase HttpApplicationState, de ca da

sesin, que es una instancia de la

estado de aplicacin es un mecani

aplicacin Web activa. El

smo de

almacenamiento global al que se p uede obtener acceso desde todas las pginas
de la ap licacin Web. Resu lta til para alma cenar la informacin q ue se debe
mantener en los recorridos de ida y vuelta del servidor y entre las solicitudes de
las pginas. Se almacena en

un diccionario de tipo clave-valor q ue se crea

cada vez q ue se enva una solicit ud a una d ireccin URL especfica. Se puede
agregar in formacin especfica

de la ap

licacin a esta estructura para

almacenarla entre las peticiones de pgina, despus de agregar esta informacin


especfica d e la aplicac in a estado de

aplica cin, el ser vidor se en carga de

administrarla.
Estado de sesin: ASP.NET permit e gu ardar v alores utilizando e l est ado de
sesin, que es una instancia de la clase HttpSessionState, de cada sesin d e
una aplicacin Web activa. Estado de sesin es sim ilar a estado de aplicac in,
con la diferencia de que el mbit

o es la actual sesin del explo rador. Si hay

varios usua rios uti lizando l a apli cacin, cada uno de ellos tendr un estado de
sesin distinto y si un us

uario sale de la a plicacin y v uelve m s t arde, e l

segundo usuario tendr un estado de sesin distinto al del primero.


El estado de sesin ti ene l a estructura de un diccionario de tipo clave-valor
para almacenar informacin espec fica de cada sesin que se debe c onservar en
recorridos de ida y vuelt a del ser vidor, as como en tre solicitudes de pgin as.
Puede utilizar el estado de sesin para llevar a cabo las tareas siguientes:
En funcin de las opc iones especificadas, la informacin de la ses in se pu ede
almacenar en cookies, en un servidor que no forme parte del proce so, o en un
equipo que ejecute Microsoft SQL Server.
Propiedades de perfiles: Permite almacenar datos especficos del usuario. Esta
caracterstica es similar al estado de sesin, salvo que los datos del perfil no
se pierden cuando caduca la sesin de un usuario. La

caracterstica

propiedades de perf iles u tiliza u n perf il ASP .NET, qu e se gu arda en un f ormato


persistente y que se asoci a con un usuari o especfico. El perfil ASP.NET permite
administrar con facilid ad la informacin sobre el usuario si n que sea necesario
crear y ma ntener una base de

datos propia. Adems, el perfil hace que la

informacin del u suario est dispon ible med iante un a AP I con est ablecimiento

38

ASP.Net

inflexible d e t ipos a la qu e pu ede obt ener acceso desde cualquier


aplicacin. Se puede almacenar

objetos de cualquier tipo en el

proporciona un sistema de almacenami

punto de la
perfil y est o

ento genrico que permite definir y

mantener casi cualquier tipo de d atos mientras stos sig an estando disponibles
en un modo de seguridad de tipos.
Para u tilizarlas debem os con figurar u n proveedor de p erfiles. ASP .NET in cluye
una clase SqlProfileProvider que permite almacenar los datos del perfil en una
clase propia de

base de datos de SQL, aunq ue tambin se puede crear una


proveedor de perfiles que almacene los

datos del perfil en

un formato

personalizado y disponga de un mecanism o de almacenamiento personalizad o,


como un archivo XML o incluso un servicio Web.

3. ENRUTAMIENTO
El enrutamiento de ASP.NET

permite usar direcciones URL s

in tener que

asignarlas a archivos especficos de un sitio web. Como la direccin URL no tiene


que asignar se a un archivo, en una aplicac in web se puede usar direcciones URL
descriptivas de la accin del usuario,

y p or tanto,

que l os us uarios puedan

identificar mejor.
En una apli cacin ASP .NET qu e no u tiliza en rutamiento, una solicit ud en trante de
una direccin URL nor malmente se asi gna a un archivo fsico en el disco como un
archivo .aspx.
En el enrutamiento ASP.NET, se definen modelos de direccin URL que contienen
marcadores de posicin para los valores utilizados al admi nistrar solicitudes URL.
En tiempo de ejecuci n, las parte s de la dire ccin URL que siguen al nombre de
aplicacin se analizan como valores discretos, tomando como base un modelo de
direccin URL que

haya definido. Por ejemp

lo, en la solic

http://server/application/Productos/disponibles/pasta, el

itud de

analizador

del

enrutamiento puede pasar los v alores P roductos, dispon ibles y t ornillos a un


controlador para l a sol icitud. Al c ontrario, en una sol icitud q ue no administre el
enrutamiento de direcciones URL, /

Productos/disponibles/pasta se interpretara

como la ruta de acceso de un archivo de la aplicacin.


Tambin pu ede u tilizar los mo

delos de

programacin direcciones URL que corre

direccin URL para crear med


sponden a las

rutas. Esto permite

centralizar la lgica para crear hipervnculos en la aplicacin ASP.NET.

39

iante

ASP.Net

Esquema de enrutamiento de ASP.NET.


Hay tres re productores fundamentales en el motor de enrutamiento de direcci n
URL: rutas, controladores de ruta y el mdulo de enrutamiento.

Una ruta asocia una direccin URL a un controlador de ruta.

Una insta ncia de

la

clase

de

ruta

del espacio de nombres

System.Web.Routing representa una ruta durante el tiempo de e jecucin


y describe los parmetros y restricciones de la ruta.

Un

controlador

de

ruta

se hereda de la interfaz

System.Web.Routing.IRouteHandler.

Esta interfaz requiere el

controlador de ruta p ara implementar un

mtodo GetHttpHandler que

devuelve un objeto que implementa la interfaz de IHttpHandler.

El mdulo intercepta las solic itudes en trantes, ex amina la dir eccin URL y
detecta si hay ruta

s coincidentes de

finidas. El mdulo recuperar

el

controlador de ruta asociada para una ruta coincidente y pedir al controlador


de enrutamiento que va a procesar la solicitud.

Figura 3.1

40

ASP.Net

Enrutamiento de ASP.NET frente a reescritura de direcciones URL


El enrutamiento de ASP.NE T es diferent e de otros esquemas de reescritura
direcciones URL. La

reescritura de direcciones URL procesa las petic

entrantes cambian do r ealmente la direcc in URL antes de enviar

de
iones

la solicitud a la

pgina web , normalmente no se tiene una API para crear direcciones URL basadas
en sus modelos. En la reescritura de di
direccin URL , deber act

recciones URL, si cambia un modelo de

ualizar man ualmente t odos los h

ipervnculos qu e

contengan la direccin URL original.


Con e l enrutamiento de ASP.NET, la direccin URL no se cambia cuando se
controla una solicitud entrante, porque el enrutamiento puede extraer valores de la
direccin URL. Si tiene que crear una direccin URL, pase los valores del parmetro
a un mtod o que gene re la d ireccin URL pa ra usted. Para cambiar el modelo de
direccin URL , cmbiel o en un a ubicacin y t odos los vnculos que cree en

la

aplicacin basada en dicho modelo utilizarn automticamente el nuevo modelo.


Definir rutas de direccin URL
Los modelos de direccin URL que se definen se conocen como

rutas, en ellas

se especifican marcadores de posic in que se asignan a valores que se analizan de


la sol icitud URL . T ambin se pu eden especif icar v alores con stantes qu e se utilizan
para comparar solicitudes URL.
En u na rut a, se defi nen marcadores de posicin (denominados parmetros
URL) encerrndolos entre corchete s ( { y } ). El carcter / se interpreta como un
delimitador cuando se analiza la direccin URL.
La informacin de la definicin de la ru ta que no es un delimitador y que no e st
encerrada entre corche tes se trata como un valor constante. Los valores que se
extraen entre los delimitadores se asignan a marcadores de posicin.
Se puede definir ms

de un mar cador de posicin entre los de limitadores, pero

deben ir separados por un valor constante.


Por ejemplo, {idioma}-{pais}/{action} es un modelo de ruta vlido. Sin embargo,
{idioma}{pais}/{action} no es un modelo vlido, porque no hay ninguna constante
o delimitador entre los marcadores de posi cin. Por lo tanto, el enrutamiento no
puede determinar dnde debe separar el va lor del marcador de posicin language
del valor del marcador de posicin pais.
En la tabla siguiente se muestran modelos de ruta vlidos y ejemplo s de solicitudes
URL que coinciden con los modelos.

41

ASP.Net

Definicin de la ruta

Ejemplo de direccin URL coincidente

{controlador}/{accin}/{id}

/Productos/mostrar/comidas

{tabla}/Detalles.aspx

/Productos/Detalles.aspx

blog/{accin}/{entrada}

/blog/mostrar/123

{tipo_informe}/{ao}/{mes}/{da}

/sales/2008/1/5

{configuracin regional}/{accin}

/en-US/ mostrar

{idioma}-{pas}/{accin}

/en-US/ mostrar

Normalmente, se agregan rutas de un mtodo que se llama desde el


controlador del evento Application_Start en el archivo Global.asax. Este
enfoque compru eba qu e las ru tas est n disponibles cu ando se in icia la ap licacin.
Tambin permite llamar directam ente al mtodo cuando se realiz a una pr ueba
unitaria de la aplicac in. Si queremos llam ar directamente a un mtodo al rea lizar
una prueba uni taria de l a apli cacin, el mtodo que registra las

rutas debe ser

esttico (Shared en Visual Basic) y tener un parmetro RouteCollection.


En e ste ejemplo ver emos el cdigo de un
objeto

Route que

define dos parmetros

archivo Global.asax que agrega un


URL

categoryName.
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
RegisterRoutes(RouteTable.Routes)
End Sub

Shared Sub RegisterRoutes(routes As RouteCollection)


Dim urlPattern As String
Dim rutaCategoria As Route
urlPattern = " Categoria /{action}/{categoryName}"
rutaCategoria = New Route(urlPattern, New CategoryRouteHandler)
routes.Add(rutaCategoria)
End Sub

42

denomi nados acti on y

ASP.Net

Establecer los valores predeterminados de los parmetros de la ruta


Al defi nir una ruta, se puede asi gnar un valor predetermi nado a un parmetro. El
valor predeterminado se utiliza si un valor de dicho parmetro no est incluido en la
direccin URL. Estos valores

predeterminados de una

ruta l os establecernos

asignando un diccionario a la propiedad Defaults de la clase Route.


En este ejemplo veremos una ruta con valores predeterminados.
Sub Application_S

tart(ByVal se

nder As

Object

, ByV

al e As Even

tArgs)

RegisterRoutes(RouteTable.Routes)
End Sub
Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
Dim urlPattern As String
Dim rutaCategoria As Route
urlPattern = "Categoria/{action}/{categoryName}"
rutaCategoria = New Route(urlPattern, New CategoriaRouteHandler)
rutaCategoria.Defaults = New RouteValueDictionary(New With _
{.categoryName = "comida", .action = "mostrar"} )
routes.Add(categoryRoute)
End Sub

Cuando el enrutamiento de ASP .NET control a una solicitud URL, la definicin de


ruta mostrada en el

ejemplo (con los valo res predeterminados de comida p

ara

categoryName y mostrar para action) genera los siguientes resultados.


DIRECCIN URL

VALORES DE PARMETROS

/ Categoria

action

"mostrar" (valor predeter

minado)

categoryName = "comida" (valor predeterminado)


/ Categoria/add

action = "agregar"
categoryName = "comida" (valor predeterminado)

/
Categoria/add/beverages

action = "agregar"
categoryName= "bebidas"

43

ASP.Net

Administrar un nmero variable de segmentos


A veces se tiene que controlar solicitudes URL que co ntienen un nmero variable
de segmentos de direc cin UR L. Al definir u na ruta , se puede especificar que el
ltimo parmetro coincida co n el resto de la direccin URL marcando el parmetro
con un asterisco *. Esto se conoce como un parmetro comodn. Una ruta con un
parmetro comodn tambin coin cidir co n las di recciones URL qu e no conti enen
ningn val or para el ltimo parmetro. E n el e jemplo siguiente se muestra un
modelo de ruta que coincide con un nmero de segmentos desconocido.
query/{queryname}/{*queryvalues}

Cuando el enrutamiento de ASP.NET controla una solicitud URL, la definicin de la


ruta mostrada en el

ejemplo gene ra los resultados que se enumeran en la tabla

siguiente.
DIRECCIN URL

VALORES DE PARMETROS

/query/select/bikes/onsale

queryname = "select"
queryvalues = "bikes/onsale"

/query/select/bikes

queryname = "select"
queryvalues = "bikes"

/query/select

queryname = "select"
queryvalues = Cadena vaca

Agregar restricciones a las rutas


Adems de comparar una solicitud URL con una definicin de ruta por el nmero de
parmetros de la direccin URL, se pu

ede especificar que los valores de

los

parmetros cumplan c iertas restricciones. Si una di reccin URL co ntiene val ores
que estn fuera de la

s restriccio nes de una ruta, esa ruta no se uti

liza para

administrar la so licitud. Se debe agregar restricciones para asegurarse de que los


parmetros URL contienen valores que funcionarn en la aplicacin.

44

ASP.Net

Las restricciones se defi nen uti lizando expres iones regu lares u objet os qu e
implementan la interfaz IRouteConstraint. Al agregar la definicin de la ruta a la
coleccin

Routes, hay que agregar restricciones creando un

objeto

RouteValueDictionary que contenga la prueba de comprobacin. A continuaci n,


se asigna este objeto

a la

propiedad Constraints . La clave

del d iccionario

identifica el parmetro al qu e se aplica la restriccin. El valor del diccionario puede


ser o una cadena que representa un

a expresin regular o u

n objeto que

implementa la interfaz IRouteConstraint.


En este ejemplo se muestran restricciones que limitan qu valores se pueden incluir
en los parmetros ao y local.

Shared Sub RegisterRoutes(ByVal routes As RouteCollection)


Dim urlPattern As String
Dim reportRoute As Route
urlPattern = "{local}/{ao}"
reportRoute = New Route(urlPattern, New ReportRouteHandler)
reportRoute.Constraints = New RouteValueDictionary(New With _
{. local = "[a-z]{2}-[a-z]{2}", . ao = "\d{4}"})
routes.Add(reportRoute)
End Sub

Cuando el enrutamiento controla una solicitud URL, la definicin de ruta mostrada


en el ejemplo anterior genera los resultados que se enumeran en esta tabla
DIRECCIN
URL

RESULTADO

/en-US

Ninguna coincidencia. Se requieren las plantillas local y ao.

/en-US/08

Ninguna c oincidencia. La restriccin en


dgitos.

/en-US/2008

local = "en-US"
ao = "2008"

45

ao requiere 4

ASP.Net

Cmo se comparan las direcciones URL con las rutas


Cuando e l enrutamiento controla solicitudes URL, intenta comparar la d

ireccin

URL de la s olicitud con una ruta. L a comparacin de una s olicitud URL con una r uta
depende de todas las siguientes condiciones:

Los modelos de ruta que se han definido o

los modelos

de ruta

predeterminados, si los hubiera, incluidos en el tipo de proyecto.

El orden en que se agregaron a la coleccin Routes.

Cualquier valor predeterminado que se haya proporcionado para una ruta.

Cualquier restriccin que se haya proporcionado para una ruta.

Si se ha definido el enrutamiento para controlar solic itudes que coinciden


con un archivo fsico.

Para evitar que el controlador equivocado administre una solici tud, se debe tener
en cuenta todas estas condiciones al defi

nir r utas. El orden en que

aparecen lo s

objetos Route en la coleccin Routes es importante. La comparacin de las


rutas se real iza desde la prim era a la ltima ru ta de la colecci n y cuando ex iste
una coincidencia , no se evalan ms rutas.
Si una

direccin URL no coi ncide con ni ngn objeto Route definido en la

coleccin RouteTable, el enrutamiento de ASP.NE T no procesar la solicitud y


procesamiento se pas a a una

el

pgina ASP.NET, servicio web u otro extremo

ASP.NET.
Crear direcciones URL a partir de rutas
Podemos utilizar rutas para generar dire

cciones URL si querem os cen tralizar l a

lgica para crear direcciones URL. Una di reccin URL se crea pasando valores d e
parmetro como un diccionario al mtodo GetVirtualPath que b usca la primera
ruta del objeto RouteCollection que coincide con los parmetros del dicc ionario.
La ruta coincidente se utiliza para generar la direccin URL.

46

ASP.Net

Ejemplo 1: Definicin de ruta.


Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
routes.Add(New Route( _
"Categoria/{action}/{categoryName}", _
New RouteValueDictionary(New With _
{.categoryName = "comida", _
.action = "mostrar"}), _
New CategoryRouteHandler()) )
End Sub

Ejemplo 2: Control que crea una direccin URL basada en la ruta.


Dim urlParameters As RouteValueDictionary
urlParameters = New RouteValueDictionary(New With {.categoryName = "pasta", _
.action = "summarize"})
HyperLink1.NavigateUrl = RouteTable.Routes.GetVirtualPath _
(context, urlParameters).VirtualPath

Cuando se ejecuta este cdigo, el co

ntrol HyperL ink1 conte ndr el valo

"Categoria/summarize/pasta" de la propiedad NavigateUrl.


Al crear una di reccin URL a parti r de una ruta, se puede especif icar qu ruta s e
debe utilizar incluyendo un nombre para la ruta.

47

ASP.Net

EJERCICIOS DE REPASO DE LA UNIDAD DIDCTICA 1: REVISANDO EL


DOCUMENTO
ENUNCIADOS.
1. Cuntos niveles de compilacin ocurren en .NET Framework?

2. Cules de los siguientes lenguajes se pueden utilizar para escribir


Scripts del lado de servidor en ASP.Net?

3. Cuando una pgina .aspx es devuelta por el servidor, la salida se


enviar al browser o navegar con formato

4. Los controladores se usan para procesar

48

ASP.Net

SOLUCIONES A LOS EJERCICIOS DE REPASO. UNIDAD DIDCTICA 1


1. La frase correcta es: Uno
2.

La respuesta correcta es: La D) A y B

3. La respuesta correcta es: HTML


4. La respuesta correcta es: Solicitudes de Extremos individuales y direcciones URL
HTTP o grupos de extensiones dentro de una aplicacin.

49

ASP.Net

TEMA 2. CREACIN DE UN SITIO WEB


En estas d os lecc iones vamos aplicar de sde un punto ms prctico lo aprendido
hasta ahora, creando una sencilla pgina web pero qu e nos ayudar a af ianzar los
conceptos hasta ahora aprendidos.
LECCIN 1. PLANEAMIENTO DE UN SITIO WEB EN ASP. NET
1. CICLO DE VIDA
1.1.CICLO DE VIDA DE UNA APLICACIN ASP.NET PARA IIS 5.0 E IIS 6.0
En A SP.NET, deben

producirse varios

pasos de procesamiento para que

aplicacin ASP.NET s e inic ialice y procese las solicitudes. Adems

una

es slo una

parte de la arquitectura de servidor Web que atiende las solicitudes


realizadas por los exploradores. Es importante que c omprendamos el ciclo de
vida de la aplicacin para que sep amos donde escribir cdigo en la fase apropiada
del ciclo y conseguir el efecto deseado.
El ciclo de vida de una aplicacin ASP.NET consta principalmente de 5 fases:
1 Fase: El usuario solicita un recurso de aplicacin del servidor Web, esta
accin se inicia con una so licitud enviada por un explorad or al servidor Web (p ara
las aplicaciones

ASP.NET, norm almente es

IIS). ASP.NET es una

extensin

ISAPI (archivo DLL que puede cargarse y se r llamado por un servidor HTTP) bajo
el servidor Web. Cuando un servidor web recibe una solicitud, examina la extensin
de nombre de archivo del archiv

o solicitado, determ ina la ex tensin ISAPI que

debera procesar dicha soli citud y, a conti nuacin, pasa sta a l a extensin ISAPI
apropiada. ASP.NET pr ocesa las extensio nes de nombr e de archivo que

tiene

asignadas, como .aspx, .ascx, .ashx y .asmx.


2 Fase: ASP.NET recibe la primera solicitud para la aplicacin. Cuando
ASP.NET recibe la pr imera so licitud para cualqu ier rec urso de u na apl icacin, la
clase ApplicationManager crea un dominio de aplicac

in. Los

dominios de

aplicacin proporcionan aislam iento entre aplic aciones p ara las variables globales
y permiten descargar cada aplicacin de

forma i ndependiente. Dentro de u n

dominio de aplicac in, se crea u na in stancia de la clase HostingEnvironment,


que proporciona acceso a la in formacin sobre la aplicac in, como el n ombre de la
carpeta en la que est almacenada la aplicacin.

50

ASP.Net

Figura 1.1
3 Fase: Se crean los objetos de ncleo ASP.NET para cada solicitud
Una vez creados el

dominio de aplicacin y una

instancia del objeto

HostingEnvironment, ASP.NET crea e inicializa los objetos de ncleo:

La clase HttpContext contiene objetos especficos de la solicitud de aplicacin


actual, como los objetos HttpRequest y HttpResponse.

El objeto HttpRequest contiene datos sobre la so licitud actual, entre los que
se incluyen las cookies e informacin del explorador.

El objeto HttpResponse contiene la respuesta que se enva al cliente, la cual


incluye todos los resultados representados y las cookies.

4 Fase: Se asigna un objeto HttpApplication a la solicitud.


Una v ez que se h an in icializado t odos los objet os prin cipales de la a plicacin, st a
se inicia creando una instancia de la clase HttpApplication. Si la aplicac in tiene
un archivo Global.asax, ASP.N ET crea una instancia de la

clase Global.asax

derivada de la clase HttpApplication y la utiliza para representar la aplicacin.


Cuando se crea una instancia de HttpApplication, tambin se crean los mdulos
configurados.

51

ASP.Net

Por ejemplo, si la aplicacin est configurada para ello, ASP.NET crea u n mdulo
SessionStateModule. Una vez cr eados todos los mdulos configur ados, se llama
al mtodo Init de la clase HttpApplication.

Figura 1.2

5 Fase: La canalizacin de HttpApplication procesa la solicitud.


La clase HttpApplication ejecuta los eventos siguientes mientras se procesa
solicitud,

estos eventos son import

antes si queremos extender la

la

clase

HttpApplication.
El proceso de esa solicitud se realiza de la siguiente manera:
1. Valida la so licitud, qu e ex amina la in formacin en viada por el ex plorador y
determina si contiene formato potencialmente malintencionado.

52

ASP.Net

2. Realiza l a asignacin de di recciones URL si

se ha confi

gurado alguna

direccin URL en la seccin UrlMappingsSection del archivo Web.config.


3. Produce los

eventos BeginRequ

PostAuthenticateRequest, Au

est, Aut

henticateRequest,

thorizeRequest, Post

AuthorizeRequest,

ResolveRequestCache, PostResolveRequestCache
4. Basndose en la extensin de nombre

de archivo del recurso s

olicitado

(asignada en el arch ivo de con figuracin de la ap licacin), seleccion a u na


clase que implemente IHttpHandler para pr ocesar la solic itud. Si la solicitud
es para un objeto (pgina) derivado de la clase Page y es necesario compilar
la pgina, ASP.NET la compila antes de crear una instancia de ella.
5. Produce los evento

s PostMapRequest

Handler, AcquireRequestState,

PostAcquireRequestState, PreRequestHandlerExecute
6. Llama a

l mt

odo P

rocessRequest (

oa

IHttpAsyncHandler..::.BeginProcessRequest

la

versin a

) de la clase IHt

sincrnica
tpHandler

apropiada para la solicitud. Por ejemplo, si la solicitud es para una pgina, la


controla la instancia de la pgina actual.
7. Produce lo s eventos PostRequestHandl

erExecute, Re leaseRequestState,

PostReleaseRequestState
8. Realiza el filtrado de respuestas si se define la propiedad Filter.
9. Produce los evento

s UpdateReques tCache, PostUp dateRequestCache,

EndRequest, PreSendRequestHeaders, PreSendRequestContent


Los eventos y el archivo global.asax
Durante el ciclo de vida de la aplicacin, sta produce eventos que se pue den
controlar y llama a

determinados mt odos que se

controlar estos eventos y mto

pueden reemplazar. Para

dos, se p uede crear un arc

hivo denominad o

Global.asax en el directorio raz de la aplicacin.


Si se crea un archivo Global.asax, ASP.NET lo comp ila en una clase derivad a de
la clase HttpApplication y, continuacin, utiliza la clase derivada para representar
la aplicacin.
Una instancia de

HttpApplication no

puede p

rocesar va rias so licitudes

simultneamente. E sto simp lifica el con trol de los eventos de la aplicacin, dado
que no es necesario b loquear los miembros no estticos de la clas e de aplicacin al
tener acceso a ellos. Esto

t ambin permit e almacen ar datos especficos de la

solicitud en miembros no estticos de la clase de aplicacin. Por ejemplo,


puede definir una pr

opiedad en el ar chivo Gl obal.asax y asi gnarla un val or

especfico de la solicitud.

53

ASP.Net

ASP.NET e nlaza automticamente los evento s de aplicac in a los controladores en


el archiv

Global.asax me

diante la conve

ncin de

nomenclatura

Application_evento; por ejemplo, Application_BeginRequest.


Los mtodos Application_Start y Application_End son mtodos especiales que
no representan eventos HttpApplication. ASP.NET los llama slo una vez dura nte
el perodo

de duracin del dominio de

aplicacin, no para cada instancia de

HttpApplication.
En esta tab la se muestran l os eventos principales qu e se u tilizan, h ay mu chos
ms pero realmente c asi no se utilizan , as que nos q uedamos con estos que son
los verdaderamente importantes.
EVENTO O
MTODO

DESCRIPCIN

Application_Start

Se le llama cuando se solicita el primer recurso (por ejemplo, una


pgina) en una aplicacin ASP.NET. Slo se llama una vez durante
el ciclo de vida de una aplicacin.

Application_event

Se produce en el

mome nto adecuad o del ci clo de vi da de l a

aplicacin. A pplication_Error s e p uede p rovocar e n c ualquier fa se


del ciclo de vida de la aplicacin.
Application_EndRequest e s el ni co evento cuya ejecuci n se
garantiza en cada solicitud, dado que sta se puede cortocircuitar.

Init

Se le llama una vez para cada instancia de la clase HttpApplication


una vez que se han creado todos los mdulos.

Dispose

Se le llama antes de que se destruya l a instancia de apl icacin. Se


puede util izar este mtodo para li

berar manualmente cual quier

recurso no administrado.

Application_End

Se le llama una vez durante el perodo de duracin de la aplicacin


antes de que sta se descargue.

Ciclo de vida de la compilacin


Cuando se real iza la primera sol icitud a u na aplicacin , ASP .NET compila los
elementos de la aplica cin en un orden especfico. Los primer os elementos que se
van a compi lar se denomi nan elementos de nivel superior. Despus

54

de la

ASP.Net

primera solicitud, se v uelven a c ompilar los elementos de nive l s uperior s lo s i


cambia una dependencia.
Despus de compilar los elementos de ni vel superi or de l a aplicacin, ASP.N ET
compila las carpetas, pginas y otros elementos segn sea necesario.
Los ensamblados compilados se almacenan en la memoria cach del servidor, se
vuelven a

utilizar en solic itudes su bsiguientes y se

conservan al rein iciarse la

aplicacin siempre y cuando permanezca sin modificar el cdigo fuente.


Dado que la aplicacin se comp ila con la primera solicitud, la sol icitud inicial a una
aplicacin pu ede t ardar bast ante ms qu e las solicit udes subsigu ientes. Se pued e
precompilar la aplicacin para reducir el tiempo requerido para la primera solicitud.

Tabla de orden de compilacin de los elementos nivel superior


ELEMENTO

DESCRIPCIN

App_GlobalResources

Se compilan los recursos globales de la aplicacin y se


genera un e nsamblado de recursos.

Los ensambl ados

ubicados e n la c arpeta Bin d e la a plicacin estn


vinculados al ensamblado de recursos.
App_WebResources

Se crean y s e compilan los tipos de servidor proxy para


los s ervicios W eb. El e nsamblado de r eferencias Web
resultante est vinculado al ensamblado de recursos, si
existe.

Propiedades

de

perfil

definidas

el

archivo

en

Si hay propiedad es d e p erfil defi nidas en el

arc hivo

Web.config de l a apli cacin, se genera un ensamblado

Web.config

que contenga un objeto de perfil.

App_Code

Se generan l os archivos de cdi go fuente y se crea uno


o vari os en samblados. Todos l

os ensambl ados de

cdigo y el ensamblado de perfi les estn vi nculados a


los ensamblados de rec

ursos y refe rencias Web, si

existen.
Global.asax

Se compila el objeto de aplicacin y s e vincula a todos


los ensamblados previamente generados.

55

ASP.Net

Tabla de orden de compilacin de las carpetas y los elementos de ASP.NET.


ELEMENTO

DESCRIPCIN

App_LocalResources

Si la carpet a que co ntiene el ele mento


solicitado in

cluye u

na carpeta

App_LocalResources, se compila el
contenido de la carpeta de recursos
locales y s e vincula al

ensamblado de

recursos globales.
Pginas
(archivos
usuario

Web
.aspx),

individuales
controles

(archivos

controladores

HTTP

Se compilan segn

sea necesario y se

de

vinculan al ensamblado de recursos

.ascx),

locales y a los ensamblados de nivel

(archivos

superior.

.ashx) y mdulos HTTP (archivos


.asmx)
Temas, pginas principales, otros

Los archivos de mscara para temas

archivos de cdigo fuente

individuales, pginas principales y ot ros


archivos de cdigo f
hacen referencia

uente a los que


las pginas se

compilan u na v ez compilada la pgina


que hace referencia.

1.2. CICLO DE VIDA DE UNA PAGINA ASP.NET


Hemos visto en el ciclo de vida de una aplicacin ASP.NET las fases por la que debe
pasar, pero estas fases se producen ante s y d espus de una sol icitud pero no son
especficas de una pgina. Por eso es necesario saber las fases de la propia pgina,
para que al igual que en la aplicacin podamo s escribir el cdigo en la fase del ciclo
de vida apropiado.
Cuando se ejecuta una pgina ASP.NE T, s ta recorre un ciclo de vida en el q ue
realiza una serie de

pasos de procesamiento. En tre ellos

inicializacin, la creacin

de instancias d

56

se in cluyen la

e controle s, la restauracin y el

ASP.Net

mantenimiento del est ado, la e jecucin del c digo de l c ontrolador de ev entos y la


representacin.
En trminos generales, la pgina recorre las siguientes fases:
1 Fase: Solicitud de pgina. La solicitud de pgina se produce antes de que
comience el cic lo de vida

de la pgina. Cuando

un usuario solicita la pgina,

ASP.NET de termina si sta se debe analizar y compilar (a fin de que comience el


ciclo de v ida de la pgina) o si se puede enviar una vers in en cach de l a pgina
como respuesta sin ejecutar la pgina.
2 Fase: Inicio En el paso de inicio, se establecen las propiedades de la pgina,
como Request y Response. En esta fase, l a pgi na tambi n determi na si la
solicitud es u na devolucin de datos o una nueva solicitud, y establece la
propiedad IsPostBack. Adems, durante

esta fase se establece

la propiedad

UICulture de la pgina.
3 Fase: Inicializacin de pgina Dura nte la inicializacin de la pgina, l os
controles incluidos en ella estn disponibles y se establece la propiedad UniqueID
de cada uno de ellos. Adems, se aplica n los temas correspondi entes a l a pgina.
Si la solicitud actual es una devoluc in de datos, los datos de devolucin an no se
han cargado y los valores de las propiedade s del control no se han restaurado a los
valores del estado de vista.
4 Fase: Carga Durante la carga, si la solicitud actual es una devolucin de datos,
las propied ades del control se car gan co n informacin recuperada del estado de
vista y del estado del control.
5 Fase: Validacin Duran te la validacin, se lla ma al mtodo Validate de
todos los controles de validacin, que establece la propiedad IsValid de cada uno
de los controles de validacin y de la pgina.
6 Fase: Control de eventos de devolucin de datos Si la solicitud es u na
devolucin de datos, se llama a los controladores de eventos.
7 Fase: Representacin Dura nte l a representacin, el estad o de vista se
guarda en la pgina y, a co ntinuacin, sta llama a cada uno de los controles para
que aporte su salida

representada al

valor OutputStream de la propiedad

Response de la pgina.
8 Fase: Descarga Se llama a la descarga cuando la pgina se ha representado
completamente, se ha enviado al cliente y est lista pa ra ser descartada. Llegad o

57

este mome nto, se descargan las

ASP.Net
Response y

propiedades de la pgina, como

Request, y se llevan a cabo las operaciones de limpieza correspondientes.

Eventos del ciclo de vida


Dentro de cada fase d el ciclo de vida de una pgina, se produce eventos
puede controlar para ejecutar su propio cdigo. E
controlador de suceso s se debe enlazar

que

n los eventos de control, el

al evento,

bien mediante declarac in

utilizando atributos como onclick o bien en el cdigo.


Las pgi nas tambi n admi ten la

conexin automtica de eventos, l o que

significa que ASP.NE T busca mtodos co n nombres determinados


automticamente cuando se

prod ucen ciertos eventos.

y los ejecu ta

Si el

atributo

AutoEventWireup de la directiva @ Page se establece en true (o si no est


definido, ya que de
enlazan de f

forma predeterminada es

orma au tomtica a los m

true), l os eventos de pgina s e

todos qu e ut ilizan la c

nomenclatura Page_event, por ejemplo Page_Load y Page_Init.

58

onvencin de

ASP.Net

En esta tabla se muestran l os eventos ms utilizados, aunque hay muchos ms


normalmente no se uti lizan ya que son eventos que usa el servidor p ara el control
de las pginas.
EVENTO DE PGINA
Page_PreInit

USO TPICO

Aqu u tilizaremos la

propiedad IsPostBack para

determinar si sta es la primera vez que se

procesa

la pgina.
Crear o volver a crear controles dinmicos.
Establecer una pgina maestra de forma dinmica.
Establecer la propiedad Theme de forma dinmica.
Leer o establecer los valores de las propiedades de
perfil.
Page_Init

Leer o inicializar las propiedades de los controles.

Page_Load

Leer y actualizar las propiedades de los controles.

Control events

Realizar el procesamiento especfico de la aplicacin:


Si

la pgi na conti ene control es de vali

dacin,

comprobamos la propiedad IsValid de la pgina y de


cada uno de los

controles

de v alidacin antes de

realizar cualquier procesamiento.


Controlar un evento especfico; po r ejemp lo, para e l
control Button, el evento Click.
Page_PreRender

Realizar los cambios f inales en e l con tenido de la


pgina.

Page_Unload

Llevar a ca bo el trabajo de

limpieza f inal, qu e podr a

incluir:
El cierre de los archivos ab iertos y de las conex iones
a bases de datos.
La f inalizacin del r

egistro o

especficas de cada solicitud.

59

de ot

ras t areas

ASP.Net

2. CREANDO UNA PAGINA WEB


Aunque las pginas Web ASP.NET se crean de forma similar a las pginas Web
HTML estticas (pgi nas que no conti enen procesami ento basado en servi dor),
incluyen elementos adicionales que ASP.NE T reconoce y procesa cuando se ejecuta
la pgina. Las caracte

rsticas que dist inguen las pginas Web ASP.NET de las

pginas HTML estticas (u otras) son las siguientes:

La extensin de nombre de archivo .aspx en lugar de .htm, .html u


otras extensiones. L a extensi n de nombre de archi

vo .aspx ha ce que

ASP.NET pr ocese la pgina, la as ignacin de estas extensiones de nombre


de archivo a ASP.NET se realiza en Inte rnet Information Services (IIS), por
defecto ASP.NET ejecuta las pginas .aspx y no las pginas .htm y .html.

Una directiva @ Page u otra directiva opcional, segn convenga

para el

tipo de pgina que se est creando.

Un elemento form q ue est configurado correctamente para ASP.N ET. El


elemento form slo

es necesario si la pg

ina contiene controles cuyo s

valores se deben utilizar durante el procesamiento de pginas.

Controles de servidor Web.

Cdigo del servidor si agrega su propio cdigo a la pgina.

Directivas
Las directivas permiten especificar las propiedade s de la pgina y la informacin
de configuracin para st a. ASP.NET utiliza las directivas como in strucciones sobre
el modo en que se debe procesar la pgina, pero no se representan como parte del
formato que se enva al explorador.
La directiva que se utiliza normalmente es @ Page, que permite especificar muchas
opciones de confi guracin para l a p gina, entre las que se encuentran

las

siguientes:

Lenguaje de programacin del servidor para el cdigo de la pgina.

Si se trata de una pgina en la que se ha incluido directamente el cdigo del


servidor, denomi nada pgina de un solo archivo, o si se trata
pgina en la que el cd

igo s e ha inclu ido en un archivo d

independiente, denom inada

pgina

60

de

cdigo

subyacente

de una
e clase
(code

ASP.Net

behind). La pgina d el ejemplo anterior es de un solo archivo; el cdigo


est directamente en la pgina

y la

directiva @ Page no

incluye

informacin sobre archiv os de clase v inculados. Opciones de depur acin y


seguimiento.

Si la pgina tiene una pgina maestra asociada y, por consiguiente, debe


tratarse como una pgina de contenido.

Si no se i ncluye ninguna directiva @ Page en la pgina o si la directiva no incluye


una con figuracin espec fica,

la conf iguracin se hereda del archi

configuracin de l a aplicacin Web (archivo Web.config) o del

vo

de

archivo de

configuracin del sitio (archivo Machine.config).


Adems de in cluir la directiva @ Page, tambin se pueden in cluir otras directivas
que admiten opciones adicionales especficas de la pgina como son:

@ Import

Esta directiva permite especificar los espacios de nombres a

los que se desea hacer referencia en el cdigo.

@ OutputCache

Esta directiva permite especificar que la pgina se debe

almacenar en la memoria cach, junto con los

parmetros que indican

cundo y cunto tiempo debe permanecer almacenada.

@ Implements

Esta directiva permite es

pecificar que la pgina debe

implementar una interfaz .NET.

@ Register

Esta directiva permite registrar controles adicionales para

su uso e n la pgina, declara el pref

ijo de la et iqueta del con trol y l a

ubicacin de su en samblado. Si queremos agregar controles de usuario

controles ASP .NET person alizados a un a pgin a debemos u tilizar est a


directiva.
Algunos tipos de archivos ASP.NET utilizan otras directivas distintas de @ Page. Por
ejemplo, la s pginas maestras ASP

.NET utilizan la d

irectiva @ Master y l os

controles de u suario ASP.NET ut ilizan la direct iva @ Control. Cada

directiva

permite especificar opciones distintas adecuadas para el archivo.


Elementos de formulario
Cuando qu eremos in cluir con troles qu e permit en a los u suarios in teractuar con la
pgina y enviarla,

debemos i ncluir un

elemento form. Au nque se uti liza el

61

ASP.Net

elemento form de HTML estndar, se deben cumplir ciertas reglas para utilizar este
elemento:

La pgina slo puede contener un elemento form.

El elemento form debe contener el atributo runat establecido con el valor


server. Este atributo permite hacer refere ncia al f ormulario y los cont roles
de la pgina mediante programacin en cdigo del servidor.

Los controles de servidor que pueden

realizar devolucin de dato s deben

estar dentro del elemento form.

La etiqueta de apertura no d ebe conten er ni ngn atributo action.


ASP.NET e stablece es tos atributos di nmicamente cuando se pr

ocesa la

pgina y reemplaza cualquier configuracin que se pueda establecer.


Controles de servidor Web
En la mayora de las pginas ASP.N

ET te ndremos que agregar

controles qu e

permitan a l usuario in teractuar con la p gina, como botones, cuad ros de texto,
listas, etc. Estos controles de servidor Web son parecidos a

los botones y los

elementos input de HTML. Pero stos se procesan en e l servidor, lo que permite


utilizar e l c digo de l s ervidor par a est ablecer su s propi edades. E stos con troles
tambin provocan eventos que se pueden controlar en el cdigo del servidor.
Los controles de servidor u tilizan una si ntaxis especial que ASP.NE T reconoce
cuando se ejecuta la pgina. En este ejem plo se muestran algunos de los controles
de servidor Web que se emplean normalmente.
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server"
Text="Click" OnClick="Button1_Click" />

Cdigo del servidor


La mayora de las pg inas ASP.NE T incluyen cdigo que se ejecuta en el servidor
cuando se procesa la pgina. ASP.NET ad mite un gran nmero de lenguajes, entre
los que se encuentran C#, Visual Basic, J#, Jscript y otros.
ASP.NET admite dos modelos a la hora de es cribir el cdigo del servidor para una
pgina Web. En el modelo de un s olo archivo, el cdigo de la pgina se encuentr a

62


en un

elemento

ASP.Net

script cuya etiqueta de apertura incluye el

runat="server". Opcionalmente, podemos crear el

atributo

cdigo para la pgina en un

archivo de clase independiente al que se hace referencia como modelo de cdigo


subyacente. En este caso, la p gina Web ASP .NET general mente NO conti ene
cdigo del servidor, vez de eso la d irectiva @ Page incluye informacin que vincula
la pgina .aspx co n su archivo de cdi go subyacente asociado. E n este ejemplo
vemos una directiva @ Page tp ica para una pgina

con un arc hivo de c digo

subyacente.
<%@ Page Language="VB" CodeFile="Default.aspx.vb" Inherits="Default" %>

El atributo CodeFile especifica el nombre d el archivo de clase independiente y el


atributo Inherits es pecifica el nombre de la c

lase del

archivo de cdigo

subyacente que corresponde a la pgina.


Ahora que ya tenemos suficiente informacin, vamos a crear ahora nuestra primera
pgina con cdigo ASP.NET. Ser un sencillo ejemplo para saber cm o se ejecutan
estas pginas y as rep asamos la ejecucin otra vez. Vamos al editor de pgin as y
nos situamos en la edicin de la

pgina de ejemplo "default.aspx"

Activamos la vi sta en cdi go fuente seleccion ando de las solapas de debajo la que
pone "Source" y escribimos lo siguiente:

Figura 2.1

63

ASP.Net

En esta im agen vemos que al empezar a escribir una funcin nos aparece una
ventana con las posibles opciones que tenem os a la h ora de in troducir cdigo, esta
ventana es IntelleSense y nos ayuda a sa ber todos los mtodos, propiedades,
atributos etc. que pod emos utilizar cu ando est amos e scribiendo cdigo en una
pgina A>Sp.NET
Una vez escrito pulsaremos en ejecutar la pgina:

Figura 2.2
El resultado se puede observar en la figura 2.3

Figura 2.3
"Now" es una funcin que devuelve la fech a y hora del s istema. Veamos lo que ha
pasado... Nuestro servidor web a ejecutado

la pgina, esto es, ha localizado e

cdigo ASP.NET que hemos insertado y lo ha ejecutado antes de devolver la pgina.

64

ASP.Net

Como en e ste caso er a una simple llamada a la f uncin Now, le h emos dich o con
ese cdigo que devuelva el resultado de ejec utar esa funcin, y por tanto , la fe cha
y hora que ves en pan talla. Esto e s la ejecucin del lado del servidor, o l o que
es lo mism o, la ejecucin de una pgina
hubisemos ido por el

por el servidor de pginas web.

Si

explorador de arch ivos y le h ubisemos dich o qu e abriera

esa pgina, no habra funcionado porque debe pasar por el servidor web para poder
hacer esa ejecucin.
El otro tipo de ejecucin es la del "lado del cliente", es decir cdigo que est
dentro de la pgina pero que se ejecuta en el Internet Explorer. Este cdigo es muy
distinto ya que solo hace pequeas operac iones sobre el cdigo de la pgina. Este
cdigo se suele escribir en Java o en Javascript y no tiene comparacin en cuanto a
potencia porque no tenemos a nue stra disposicin todas las funciones de ASP.N ET
ejecutndose en el servidor.
ASP.NET es t pues conectado co n un servidor que puede ser un IIS, co mo
seguramente sea cuando est

en func ionamiento nuestra aplicacin web o

ejecutndose con el m iniservidor web que nos ofrece e l entorno de desarrollo


integrado.
Una vez hayamos termi nado nu estro si tio web tendre mos que c olocarlo desde
nuestro equipo, donde lo hemos creado y pu esto a prueb a al servidor principal con
IIS. Es decir copiar el web de nue stro di sco duro al del s ervidor web. Tendremo s
que realizar dos sencillos pasos:
1. Crear un directorio virtual en el servidor
2. Copiar el sitio web completo
Antes de copiarlo debemos desactivar todo el cdigo que hayamos puesto para
depuracin y que veremos mas adelante. Pa ra real izar est a labor n os iremos a l a
opcin de publicar web en el men "Sitio Web":

65

Figura 2.4

Figura 2.5

66

ASP.Net

ASP.Net

Primero debemos conectarnos al destino pulsando el botn de arriba de "Conectar":


Tenemos varias opciones.

Si elegimos Sistema de archivos (File System) necesitaremos indicarle


simplemente la carpet a destino. Si tenemos mapeada en una unidad la
ruta del servidor ser una forma sencilla

ISS Local lo instalar en el servidor web IIS de nuestro equipo. Esto es


til si hemos estado desarrollando en el propio Windows Server, que no es
habitual. Esta opcin la utilizaremos poco ya que es muy poco comn.

Sitio FTP. Copia los


ficheros FT P. Los

fichero mediante el

protocolo de transferencia d e

datos que nec esita para

conectarnos son los de un

servidor con el servicio FTP hab ilitado, una carpeta como destino y los
"credenciales" para poder copiar. Normalmente los sitios FTP no s on de
escritura por eso tendremos que dispon er de una c uenta con acceso de
escritura. Este sistema es muy

comn c uando tenemos nues tro web

alojado fuera de nuestra empresa. Por ejemplo, realizamos los desarrollo s


en local o e n nuestra e mpresa pero el servidor de explotacin est en un
proveedor de Internet. s te nos habr comunicado nuestra cuenta de FTP
para que podamos transferir all

el web y los sucesivos cambios que

realicemos en l.

67

ASP.Net

Figura 2.6

Sitio remoto. Es la opcin mas habitual si tenemos u n IIS funcionando en


nuestra web, nos podremos conectar a l para t ransferir con en esta utilidad
las pginas (Ver figura 2.7).

68

ASP.Net

Figura 2.7
Una vez seleccionada el t ipo de conexin que se qui era realizar, el funcionamiento
es muy sencillo ya que solamente seleccionaremos las pa rtes que queremos mo ver
y pulsaremos en la f lecha de la di reccin que queremos move r. Una buena tcnica
que hay que tener en cuenta

es realizar una copia de seguridad antes

proceso.

Figura 2.8

69

de este

ASP.Net

3. CONTROLES
Los controles de ASP.NET son ob jetos de pginas web ASP.N ET q ue se ejecutan
cuando se s olicita la pgina y que representan marcado e n un explorador. Muchos
controles son similares a elementos HTML

conocidos, c omo botones y c uadros de

texto. Otros controles abarcan com portamiento complejo, por ejemplo controles de
calendario y controles que administran las conexiones de datos.
3.1. CONTROLES DE USUARIO

Un control de usuario es un ti po de contro l compuesto que f unciona de for ma


similar a la de una pgi na Web AS P.NET: se pueden agregar controles de servidor
Web y mar cado a u n control de usuari o, as como definir propied ades y mtodos
para el control. Desp us se p ueden in crustar en pginas Web A

SP.NET, do nde

actan como una unidad.


Los controles de usuario ASP.NET se crean casi de la misma forma en la que se
disean l as pginas Web ASP.NET. Se pueden usar los m

ismos ele mentos y

controles HTML en u n control de usuari o que en una pgi na ASP.NET estndar. Sin
embargo, el control de usuario no tiene elementos html, body ni form; adems,
la extensin de nombre de archivo debe ser .ascx.
Para crear un control de usuario ASP.NET
1. Abrimos el proyecto de sitio Web al que queramos agregar controles d e
usuario. Si an no tenemos ningn proyecto de sitio Web lo crearemos.
2. En el men Sitio Web, hacemos clic en Agregar nuevo elemento.
Aparecer el siguiente cuadro de dilogo:

70

ASP.Net

Figura 3.1
3. Hacer clic en Control de usuario Web.
4. En el cuadro Nombre, escribiremos un nombre para el control.
De forma p redeterminada, la extensin de no mbre de archivo .ascx se anexa
al nombre de control que escriba.
5. En la list a Lenguaje, seleccionaremos el

lenguaje de programacin que

queramos utilizar, en nuestro caso Visual Basic.


6. Opcionalmente, si quer emos mantener al gn cdi go del control de usuari o
en un archi vo independient e, activaremos la casilla Colocar el cdigo en
un archivo independiente.
7. Hacemos clic en Agregar.
De esta manera crearemos el nuevo contro l de usuari o ASP.NET y, a conti nuacin,
se abre en el diseador. El cdigo de formato para este nuevo control es similar al
de una pgi na Web ASP.N ET, salvo que conti ene una directiva @ Control en vez
de una directiva @ Page.
En este ejemplo vemos un control de usuario que implementa un control de nmero
en el que lo s usuarios pueden hacer clic en los botones arriba y abajo para mostrar
varias opciones de un cuadro de texto.

71

<%@ Control Language="VB" ClassName="UserControl1" %>


<script runat="server">
Protected colors As String() = {"Red", "Green", "Blue", "Yellow"}
Protected currentColorIndex As Integer = 0
Protected Sub Page_Load(ByVal sender As Object, _
ByVal e As System.EventArgs)
If IsPostBack Then
currentColorIndex = CInt(ViewState("currentColorIndex"))
Else
currentColorIndex = 0
DisplayColor()
End If
End Sub

Protected Sub DisplayColor()


textColor.Text = colors(currentColorIndex)
ViewState("currentColorIndex") = currentColorIndex.ToString()
End Sub

Protected Sub buttonUp_Click(ByVal sender As Object, _


ByVal e As System.EventArgs)
If currentColorIndex = 0 Then
currentColorIndex = colors.Length - 1
Else
currentColorIndex -= 1
End If
DisplayColor()
End Sub

72

ASP.Net

ASP.Net

Protected Sub buttonDown_Click(ByVal sender As Object, _


ByVal e As System.EventArgs)
If currentColorIndex = colors.Length - 1 Then
currentColorIndex = 0
Else
currentColorIndex += 1
End If
DisplayColor()
End Sub
</script>
<asp:TextBox ID="textColor" runat="server"
ReadOnly="True" />
<asp:Button Font-Bold="True" ID="buttonUp" runat="server"
Text="^" OnClick="buttonUp_Click" />
<asp:Button Font-Bold="True" ID="buttonDown" runat="server"
Text="v" OnClick="buttonDown_Click" />

Hay que te ner en cuenta que el control

de usuari o es muy si milar a u na pg ina

ASP.NET, y a que conti ene vari os controles (un co ntrol TextBox y

dos controles

Button) y cdigo que controla los eventos Click de los boton es y el ev ento Load de
la pgina. Sin embargo, el control no contiene ningn formato, excepto p ara
los controles.
Agregar un control de usuario a una pgina
Para agregar un control de usuario a una pgina es necesario registrarlo primero
en la pgina que aloja el control (o

pgina host). Al

hacerlo, se debe

especificar el archivo .ascx que conti ene e l control , as como un prefi jo y un


nombre de etiqueta que se utilizarn para declarar el control en la pgina.
Definir propiedades y mtodos para un control de usuario
Se puede definir prop iedades y mtodos pa ra un con trol de usuari o de la misma
manera que l o haramos para una pgi na. La definicin de una propiedad para un

73

ASP.Net

control de usuari o permite establecer sus propiedades mediante declaracin


y en el cdigo.
Eventos de los controles de usuario
Si un

control de usuario contiene controles de servidor Web, es pos ible

escribir cd igo en dic ho control para contro

lar los eventos prod ucidos por los

controles secundarios. Por ejempl o, si nuestro cont rol de usuari o contiene un


control Button, se puede crear un

controlador en el control de usuario para el

evento Click del botn.


Por defecto, los eventos producidos por los controles secundarios en un
control de usuario no estn disponibles para la pgina host. Pero si es
posible definir en el c

ontrol de usuari o eventos y producirlos de

modo que se

notifiquen a la pgina host. Esto se hace de la misma manera que la definicin de


eventos para una clase.
Hacer referencia a recursos externos
Cuando se ejecuta un control de usuario, las referencias a recursos externos,
como i mgenes o de limitadores para ot ras pgin as, se resu elven u tilizando l a
direccin URL del control de usuario como direccin URL base. Por ejemplo,
si el control de usuari o contiene un cont rol Image cuya propiedad ImageUrl se ha
establecido en Images/ Button1.gif, la direcc in URL de l a imagen se agrega a l a
direccin URL del control de usua rio para resolver la rut a de acceso completa a la
imagen. Si el control de usuari o hace referencia a un recurso que no se encue ntra
en una subcarpeta del propio control, se debe proporcionar una ruta de acceso que
se resuelva en la carpeta correcta en tiempo de ejecucin.
Almacenamiento en cach y controles de usuario
Los

controles

de

usuario pueden admitir

e l

uso de

directivas

de

almacenamiento en cach independientes de la pgina host. Por lo tanto se


puede agregar a las pginas controles de usuario que permitan almacenar en cach
partes de una pgina.
Para incluir un control de usuario en una pgina de formularios Web Forms
1. En la pgina Web ASP.N

ET co ntenedora, crearemos una directiva

Register que incluya lo siguiente:

74

ASP.Net

Un atributo TagPrefix, que permite asociar un prefijo al con trol de


usuario. Es te prefi jo se i ncluir en l a etiqueta de

apertura d el

elemento del control de usuario.

Un atributo TagName, que permite asociar un nombre al control de


usuario. Es te nombre se

incluir en la et iqueta de

apertura del

elemento del control de usuario.

Un atributo Src, que permite definir la ru

ta de acceso virtual al

archivo del control de usuario que se va a incluir.


2. En e l cuerpo de la pgina Web, de clararemos e l el emento de c ontrol de
usuario dentro del elemento form.
3. Si el control de usuari o expone propiedades pblicas, tambin podemo s
establecerlas mediante declaracin.
<%@ Page Language="VB" %>
<%@ Register TagPrefix="uc" TagName="Spinner"
Src="~\Controls\Spinner.ascx" %>
<html>
<body>
<form runat="server">
<uc:Spinner id="Spinner1"
runat="server"
MinValue="1"
MaxValue="10" />
</form>
</body>

3.2

CONTROLES DE SERVIDOR

Los controles de servidor web ASP.NET son objetos de pginas web ASP.N ET
que se ejecutan cuando se solic
explorador. Muchos controles de

ita la p gina y que re presentan marcado en e l


servid or Web son similares a

elementos HTML, com o botones y cuadro

s de texto.

los conocid os

Otros contr oles abarcan

comportamiento complejo, como los cont roles de un calendario, y

controles que

puede usar para conectar a orgenes de datos y datos de visualizacin.

75

ASP.Net

Controles de servidor HTML


Los controles de servidor HTML son elementos HTML (o ele mentos en otro
marcado compatible, c omo XHTML) que cont ienen atributos que los convierten en
programables en cdigo del servidor. Por defecto, los elementos HTML en una
pgina Web ASP.N ET no estn disponibles para el servidor. En su lugar, se tratan
como texto opaco y se pasan al explorador. Pero cuando se convierten en controles
de servidor HTML, los elem

entos HTML q uedan exp uestos co mo elementos

programables en el servidor.
El modelo de objetos de los controles de serv

idor HTML se relaciona

estrechamente con el de los elementos correspondientes. Por ejemplo, los atributos


HTML se exponen en controles de servidor HTML como propiedades.
Cualquier elemento HTML de una pgina se puede conve rtir en control de serv idor
HTML agre gando el atributo runat="server". Durante el anlis is, el marc o de
trabajo de la pgina AS P.NET crea instancias de todos los elementos que contienen
el atributo runat="server". Si queremos hacer referenci a al control como un
miembro dentro del cdigo, tambin deberemos asignarle un atributo id al control.
El marco de trabajo de la pg ina proporciona controles de servidor HTML
predefinidos para los elementos HTML que se uti lizan con ms frecuenci a
dinmicamente en una pgi na: el elemento form, l os elementos input (c uadro
de texto, casi lla, botn En viar), el

elemento select, etc. Estos

controles

de

servidor HTML predefinidos comparten las propiedades bsicas del control genrico
y, adems, cada control normalmente

proporciona su propio conjunto

de

propiedades y su propio evento.


Los controles de servidor HTML ofrecen las funciones siguientes:

Un modelo de objetos que pueda volver a programar en el servidor con las


tcnicas habituales orientadas a objet os. Los controles de servidor exponen
propiedades que pe rmiten manipular los

atributos de marcado del

control mediante programacin en el cdigo del servidor.

Un conjunto de eventos para los que pueda escrib ir controles de eventos


de l a mi sma forma que lo har a en un fo rmulario basado en cliente, con la
excepcin de que un evento se controla en cdigo del servidor.

La capacidad de controlar eventos en un script de cliente.

76

ASP.Net

Mantenimiento automtico del estado del control. Cua ndo la pgina


realiza u na accin de ida y v uelta al serv idor, los v alores qu e el u suario
escriba en los controles de servid or HTML se mantendrn automticamente
y la pgina se devuelve al explorador.

Interaccin con los controles de validacin ASP.NET para poder


comprobar que un usuario ha escrito la informacin adecuada en un control.

Enlace de datos a una o varias de las propiedades del control.

Compatibilidad con estilos si la pgina Web ASP.NET

se muestra en un

explorador que admite hojas de estilos en cascada.

Paso a tr

avs de

atributos personalizados. Pueden agregarse lo

atributos que se necesite n a un control

de servi dor HTML: el marco de

trabajo de pginas los representar si n ni ngn cambi o en l a funci onalidad.


Esto permite agregar atributos especficos del explorador a los controles.

Controles de servidor Web


Los controles de servidor Web son un seg undo conju nto de controles dise ado
con otro enfoque. No se asignan necesariamente uno a uno a co ntroles de servidor
HTML. En l ugar de el lo, se defi nen como controles abstractos, e
marcado real represen tado por el contro l puede ser muy diferente
respecto al que se han programado. Po

n los que

el

al mode lo con

r ejemplo, un control RadioButtonList de

servidor Web podra representarse en una tabla o co mo un texto en lnea con otr o
marcado.
Los controles de servidor Web in cluyen controles de formulario tradicionales
como botones y cuad ros de texto, adem s de controles complejos, como, por
ejemplo, las tablas. Tambin incluyen controles que proporcionan funcionalidad de
formulario de uso fre cuente, co mo l a pr esentacin d e datos en cuadrcula, la
eleccin de fechas, la visualizacin de mens, etc.
Los controles de servidor Web ofrecen to das las funciones descritas anteriormente
para los controles de servidor HTML (excepto la asignacin uno a uno a elementos)
y estas funciones adicionales:

Un modelo de objetos enriquecido q ue proporcion a capacidades de


programacin de tipo seguro.

77

ASP.Net

Deteccin automtica del explorador. Los controles pueden detectar las


funciones del explorador y representar el marcado adecuado.

Para algunos controles, la capacidad para definir su propio diseo para


el control utilizando Templates.

Para algunos controles, la

capacidad de especificar si un evento del

control provoca un envo inmediato al servidor o, en su lugar, se


almacena en cach y se activa cuando se enva la pgina.

Compatibilidad para temas, lo que le permite definir un aspecto uniforme


para los controles en todo el sitio.

Capacidad para pasar eventos de un control anidado (como un botn


en una tabla) al control contenedor.

Para agregar un control mediante declaracin


1. Cambiamos a la vista de edicin de origen.
2. Escribimos el e lemento que repre senta el co ntrol en el archivo .aspx. La
sintaxis exacta que debemos utiliz

ar depende del con

trol que estemos

agregando, pero en general se aplican las siguientes reglas:

Los controles deben incluir el atributo runat="server".

Establecer el atributo ID del control a menos que el control forme


parte de un control complejo y se repita.

Los controles de servidor Web se declaran con una etiqueta XML


que hace referencia al espacio de nombres asp.

Las declaraciones del

control deben cerrarse correctamente. Se

puede especificar una etiqueta de cierre explcita o, en caso de que el


control no

tenga elementos secund arios, puede especif icarse una

etiqueta de cierre automti


controles de entrada HTML q

co. Las nicas excepciones son los


ue no pue

den tener elem

secundarios, como los controles de entrada.

Las propiedades del control se declaran como atributos.

78

entos

ASP.Net

En los siguientes ejemplos se muestran declaraciones tpicas para controles


de servidor Web:
<!-- Textbox Web server control -->
<asp:textbox id="TextBox1" runat="Server" text="">
</asp:textbox>
<!-- Same, but with self-closing element -->
<asp:textbox id="Textbox2" runat="Server" Text="" />
<!-- Web DropDownList control, which contains subelements -->
<asp:DropDownList id="DropDown1" runat="server">
<asp:ListItem Value="0">0</asp:ListItem>
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
<asp:ListItem Value="3">3</asp:ListItem>
</asp:DropDownList>
<asp:Repeater id="Repeater2" runat="server">
<HeaderTemplate>
Company data:
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Font-Names="verdana" Font-Size="10pt"
Text='<%# Eval("Name") %>' />
( <asp:Label ID="Label2" runat="server"
Font-Names="verdana" Font-Size="10pt"
Text='<%# Eval("Ticker") %>'/>
)
</ItemTemplate>
<SeparatorTemplate>
,
</SeparatorTemplate>
</asp:Repeater>

Para agregar un control de servidor Web mediante el diseador


1. Cambiamos a la vista Diseo.
2. Desde la ficha

Estndar del Cuadro de herramientas, arrastr amos el

control a la pgina.

79

ASP.Net

Figura 3.3
3.3

CONTROLES DE ELEMENTOS

Los controles de los elementos Web ASP.NET son un conju nto i ntegrado de
controles concebidos para crear

sitios We b que permiten al usuario mod ificar el

contenido, el aspecto y el comportamiento de las pginas Web directamente en un


explorador.
Las modific aciones se pueden aplicar a to dos l os usuari os del si tio o a usuari os
individuales. Cuando los usuarios modifican pginas y controles, es posible guardar
la confi guracin para conservar l

as pref erencias pers onales de

un usuario en

futuras sesiones del ex plorador; esta caracterstica se denomina personalizacin.


Estas f unciones de l os el ementos Web significan q ue los desarrolladores podemos
permitir que los usuari os fi nales person alicen di nmicamente una apl icacin Web,
sin intervencin del desarrollador o del administrador.
Utilizando el conjunt

o de control

es

de

elementos Web, e

l usuario

desarrollador puede permitir que los usuarios finales hagan lo siguiente:

80

como

ASP.Net

Personalizar el contenido de la pgina. Los us uarios pueden a gregar


nuevos controles de

elementos Web a una

pgina, quitarlos, ocult arlos o

minimizarlos como las ventanas normales.

Personalizar el diseo de pgina. Los usuarios pueden arrastrar un


control de el ementos Web a una zo na diferente de una p gina o cambi ar su
apariencia, sus propiedades y su comportamiento.

Exportar e importar controles. Los usuarios pueden importar o exportar


configuraciones de con troles de e lementos Web para utilizarlas en ot ras
pginas o en otros sitios, conservand

o las propiedad es, la apar iencia e

incluso los datos de los controles. Esto

reduc e la necesidad de entr ada de

datos y de configuracin por parte de los usuarios finales.

Crear conexiones. Los usuarios pueden establecer co

nexiones e ntre los

controles de forma que, por ejem plo, un control grfico podra mos trar un
grfico para los datos de un co

ntrol de cotizacin burstil. Los usuarios

pueden personalizar no slo la propia con exin, sino tambin la apariencia y


los detalles de cmo el control grfico muestra los datos.

Administrar y personalizar la configuracin de todo el sitio. Lo s


usuarios autori zados pueden

configurar opciones para todo el

si tio,

determinar quin puede tener acceso a un sitio o a una pgina, establecer el


acceso a los controles basado en funciones, etc.

Fundamentos de los elementos Web


El conjunto de control es de elementos Web consta de tres pilares bsicos: l a
personalizacin, l os componentes estructurales de la interfaz de usuario y
los controles de la interfaz de usuario de elementos Web reales. Gran parte
del esfuerzo de desarrollo se cent rar en los controles de elementos Web, que son
simplemente controles ASP.NET que pueden utilizar las caractersticas del conjunt o
de controles de elementos Web.

Escenarios donde utilizar elementos Web


Normalmente hay tres formas de trabajar con elementos Web: crear pginas

que

utilicen controles de elementos Web, crear controles de elementos Web individuales


o crear aplicaciones Web completas personalizables, como un portal.

81

ASP.Net

Desarrollo de pginas. Podemos utilizar herramientas de dise o visual como


Microsoft Visual Studio 2008 para

crea r pg inas que utilizan e lementos Web.

Una ventaja del uso de una herramienta como Visual Studio es que el conjunto
de controles de elementos Web ofrece ca ractersticas para crear y

configurar

controles de elementos Web en un dise ador visual med iante operaciones d e


tipo arrastrar y colocar. Esto puede acel

erar el desarrollo de aplicaciones de

elementos Web y reducir la cantidad de cdigo que tiene que escribir.

Desarrollo

de

controles.

Podemos utilizar cualquier control ASP.N

existente como un control de e

ET

lementos Web, incluyendo los controles de

servidor Web estnda r, controles de servidor personaliz

ados y controles d e

usuario. Para lograr el mximo control de programacin de su entorno, tambin


podemos crear controles de elementos We b personalizados que derivan de la
clase WebPart. Para el desarrollo de controles de elementos Web individuales,
normalmente crearemos un control de usuario y l o utilizar como un control
de elementos Web o desarrollar un control de elementos Web personalizado.

Desarrollo

de

aplicaciones

Web.

El desarrollo

de aplicaciones Web

totalmente i ntegradas y personal izables, como un port al, i mplica el uso ms


completo de elem entos Web. Podemos desarrollar un siti o Web que permit a
una personalizacin complet a de l a in terfaz de usuari o y del conte nido, con
caractersticas similares a

MSN (Microsoft Network). O incluso puede

desarrollar una aplicacin empaquetada qu e se puede dis tribuir y ser utilizada


por compaas o ISP (Proovedor de Servicios de Internet.

4. MODELO DE CODIGO DE PAGINAS


Una pgina Web ASP.NET se compone de dos partes:

Elementos visuales, in cluidos el formato, los c ontroles de servidor y el texto


esttico.

Lgica de programacin para la p

gina, q ue incluye controladores de

eventos y otro tipo de cdigo.


ASP.NET pr oporciona dos modelos para ad

ministrar el

cdigo y

los e lementos

visuales: el modelo de pgina un solo archivo y el modelo de pgina de


cdigo subyacente. Los dos funcionan de la misma manera y se
los mismos controles y el mismo cdigo para ambos modelos.

82

pueden utilizar

ASP.Net

4.1.MODELO DE PAGINA DE UN SOLO ARCHIVO


En es te modelo de pgina, el formato de

la pgina y s u cdigo de programacin

estn el mismo archivo .aspx fsico. El cdigo de programacin se encuentra en un


bloque script q ue c ontiene el

atributo runat="server" para

marcarlo c omo

cdigo que debe ejecutar ASP.NET.


En este ejemplo se muestra u na pgi na de un sol o archivo que conti ene un
control Button y u n c ontrol Label . La pa rte resaltada muestra el controlador de
eventos Click para el control Button dentro de un bloque script.

<%@ Page Language="VB" %>


<script runat="server">
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
Label1.Text = "Clic en " & DateTime.Now.ToString()
End Sub
</script>
<html>
<head id="Head1" runat="server">
<title>Model de pagina de un archivo</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1"
runat="server" Text="Label">
</asp:Label>
<asp:Button ID="Button1"
runat="server" OnClick="Button1_Click" Text="Button">
</asp:Button>
</div>
</form>
</body>
</html>

El bloque script puede contener tanto cdigo como requiera la pgina, este cdigo
puede contener controladores de eventos para los controles de la pgina (c omo
en el e jemplo), mtodos, propiedades y c ualquier tipo de cdigo como el que se
empleara normalmente en un archivo de clase.

83

ASP.Net

En tiempo de ejecucin, la pgina de un solo archivo se trata como una


clase que deriva de la clase Page. La pgina no co ntiene una declaracin de
clase ex plcita, sin o qu e e l comp ilador genera una nuev a cl ase que conti ene los
controles como miembros. (No to dos los co ntroles se ex ponen como miembros d e
la pgi na; al gunos son control es secundari os de otros controles.) El cdigo d e l a
pgina pasa a formar p arte de la clase; por ejemplo, los controladores de eventos
que se hayan creado se convierten en miembros de la clase Page derivada.

4.2.MODELO DE PAGINA DE CODIGO SUBYACENTE (CODE BEHIND)

Este modelo permite mantener el formato e n un archivo ( el archivo .aspx) y el


cdigo de programacin en otro.

El nomb re del archivo de cdigo

vara segn el

lenguaje de programacin que se est utilizando.


Hay que te ner en cue nta que no todos lo s lenguajes de programacin de .N ET
permiten cr ear archivo s de cdigo subyacente para las pginas Web ASP.N ET. Los
lenguajes deben admit ir c lases p arciales. Por ejemp lo, J# no adm ite las clas es
parciales y, por cons

iguiente, no permit e la creacin de archivos de cdigo

subyacente para las pginas ASP.NET.


En el modelo de cdigo subyacente, el ejemplo utilizado en el punto anterior para la
pgina de un solo arc hivo estara en dos partes. E l formato estara en un archivo
(en este ej emplo, E jemplo.aspx) y sera similar a la pgina de
como se muestra a continuacin.
Fichero Ejemplo.aspx (Que se muestre a parte)
<%@ Page Language="VB" CodeFile="Ejemplo.aspx.vb"
Inherits="Ejemplo" AutoEventWire="false" %>
<html>
<head runat="server" >
<title>Modelo de cdigo subyacente</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label id="Label1"
runat="server" Text="Label" >
</asp:Label>
<br />
<asp:Button id="Button1"

84

un solo archivo,

ASP.Net

runat="server"
onclick="Button1_Click"
Text="Button" >
</asp:Button>
</div>
</form>
</body>
</html>

El modelo de cdigo subyacente de la versin 2.0 de ASP.NET aprovecha una nueva


caracterstica de lenguaje conocid a como clases parciales. El archivo de cdigo
subyacente de una p gina no es una definicin de clase completa. Incluye slo el
cdigo de la aplicac in necesario, como los controladores de eventos. La cl

ase

parcial de cdigo subyacente no necesita in cluir variables de instancia ni enlaces de


eventos explc itos. ASP.NE T puede deducir las instancias de contro l y derivar los
enlaces de eventos del marcado durante la compilacin.
Nota Que aparezca el texto tipo bocadillo
Las pgin as ASP .NET que u tilizan Visu al Bas ic como l enguaje de programaci n
pueden utilizar la palabra clave Handles en los mtodos para enlazarlos a eventos
explcitamente y lograr un rendimiento ligeramente ms rpido.
Ejemplo de un archivo de cdigo subyacente
Partial Class SamplePage
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles Button1.Click
Label1.Text = "Clic en " & DateTime.Now.ToString()
End Sub
End Class

LECCIN 2. SERVICIOS WEB XML CON ASP. NET

85

ASP.Net

XML (Lenguaje de marcado extensible) como un formato de descripcin

de

datos abierto ha dado l ugar a la r ealidad de un I nternet programable. Del mis mo


modo que TCP/IP pr oporcion la conecti vidad uni versal para Int ernet, y HTML
proporcion un l enguaje normali zado para mostrar i

nformacin en

una gran

variedad de pl ataformas para el c onsumo humano, XML proporciona un lenguaj e


normalizado para intercambiar d atos para el consumo automati zado, nos d a l a
capacidad de representar los datos en

un

formato ampliamente aceptado que

permite a l os equ ipos en viar y recibir dat os en un est ilo predecibl e, h abilitando la
capacidad de programacin que se

extiende ms all de sistemas cerrad

controlados. XML es liberador porque su

os y

simplicidad y extensibilidad permiten

definirlo prcticamente todo, dejando espacio para la expansin. Uno de los bloques
de creacin fundamentales del Internet programable son los servicios Web XML.
Microsoft proporciona la compatibilidad

para generar

los servicio s Web XML,

utilizando t ecnologas diseadas para sat isfacer las n ecesidades de dest inatarios
diferentes. Especfica mente, Microsoft ofrece a

los programadores la opcin

de

crear servic ios Web XML utilizando ASP.NET, ATL Server, .NET Remoting, y
SOAP Toolkit 2.0. ASP.NET y .NET Remoting f acilitan la creaci n de serv icios
Web XML, puesto que se generan en la parte superior de .NET Framework. El SOAP
Toolkit 2.0 proporciona los servicios Web XML compatibles que admiten Microsoft
Visual St udio 6. 0 y las aplicaci ones h eredadas, permit iendo in teroperar con los
servicios Web XML generados en .NET Framework.

1. INFRAESTRUCTURA SERVICIOS WEB XML


Un servicio web XML es una e ntidad prog ramable que proporcio na un elem ento
determinado de f uncionalidad, c omo lgica de la ap licacin y e s accesibl e por
diversos sistemas potencialmente dispar

es usando los estndare s de Internet

ubicuos, como XML y HTTP. Los s ervicios web XML dependen en gr an medida de la
amplia aceptacin de XML y otros est

ndares de

Internet para crear

una

infraestructura qu e admita la interoperabilidad de aplicaciones en un ni vel


que resuelva muchos de los problemas que anteriormente impidieron tales intentos.
Un serv icio w eb XM L pu ede u sarse in ternamente por u na sola aplicac in o
exponerse externamente a travs de Internet para su uso por diversas aplicaciones.
Puesto que es accesible a travs de una

in terfaz est ndar, u n servicio w eb X ML

permite a si stemas h eterogneos f uncionar juntos co mo una senci lla web


clculo.

86

de

ASP.Net

En lugar de seguir las funciones genricas de portabilidad de cdigo, los servicios


web XML

proporcionan una solucin vi

able para habilitar

los datos y la

interoperabilidad de l si stema, y a que u san la mensajera basada en XML co mo


un medi o fundamental para l a comunicacin de datos y ayudar a salvar las
diferencias que existen entre los sistem
sistemas operativos

as que usa n m odelos de componentes,

y lenguajes de

programacin incongruentes. Los

programadores podemos crear ap licaciones que desarrollen juntas servicios

we b

XML de v arios or genes de la m isma man era qu e u samos t radicionalmente lo s


componentes para crear una aplicacin distribuida.
Una de las caractersticas bsica s de un servicio web XML es el

alto grado de

abstraccin que existe entre la implementacin y el uso de un servicio. Al


usar la mensajera basada en XML como el mecanismo para crear y tener acceso al
servicio, e l cli ente y el prov eedor del se rvicio w eb XM L se l iberan de la mu tua
necesidad de tener informacin de las entradas, las salidas y la ubicacin.
Los servicios web XML

deben ser independientes respecto a la opcin de

sistema operativo, modelo de objetos y lenguaje de programacin para


tener xito en la disparidad de Web. Asimismo, para los serv icios web de XML
se aprovechen de la misma adopcin ex tendida que otras tecnologas basadas en
Web, deben tener las siguientes caractersticas :

Muy poco dependientes: dos sistemas se consideran poco dependientes si


la nica obligacin impuesta en am bos sistemas es comprender los
mensajes autodescriptivos, basad os en texto menci onados anteri ormente.
Los si stemas muy dependi entes, por otro
significativa de carga person

alizada para h

lado, imponen una c antidad


abilitar la comu nicacin y

requieren una comprensin mayor entre los sistemas.

Comunicacin ubicua: es impr obable que cualquiera genera ahora un


sistema operativo o e n un futuro cercano que no incorpore la capacidad de
conectarse a Internet, lo que proporci ona un canal de comuni cacin ubicuo.
Por tanto, l a capacidad de conectar

casi cualquier sistema o dispositivo

Internet garantiza que tal es sistemas y di spositivos estarn universalmente


disponibles a cualquier otro sistema o dispositivo conectado a Internet.

Formato de datos universal: al adoptar los mtodos de comunicacin de


bucle cerrado con estndares abiertos sobre la propiedad , cualquier sistema
que admita los mism

os estndares ab iertos es capaz de entender lo

87

ASP.Net

servicios w eb de XM L. Al u sar men sajes autodescriptivos, basados e n texto


que los servicios web

XML y sus clientes pueden compartir s in conocer lo

que constituye cada sistema subyacente

se habilita la comunicacin entre

sistemas autnomos y dife rentes. Los servicios web XML logran esta funcin
con XML.
Los servicios web XML emplean una infraestructura que proporciona lo siguiente:

Un mecanismo para localizar servicios web XML

Una descripcin de servicio para definir cmo usar esos servicios

Formatos de conexin estndar con los que comunicarse.

La siguiente imagen muestra un ejemplo de esta infraestructura.

Figura 1.1

En es ta tabla podemos ver la funcin

de cada una de las partes d

infraestructura.

88

e la

ASP.Net

PARTE DE LA
FUNCIN

INFRAESTRUCTURA
Directorios

de Los directorios de servicio s web XML proporcionan

servicios web XML

ubicacin

una

central par a loca lizar serv icios w eb XML

proporcionados por otr as orga nizaciones. Los directorios


de servicios web XML como un re gistro UDDI cumplen
esta f uncin. L os clientes del ser vicio w eb X ML pu eden
hacer referencia el directorio de un servicio web XML.
Descubrimiento de El descubrimiento de servicios web XML es
servicios web XML

que consiste en loca

lizar, o descubrir, uno

un proceso
o varios

documentos relac ionados que des criben un s ervicio web


XML determinado usando el Lenguaje de des cripcin de
servicios web (WSDL). La especificacin DISCO define un
algoritmo para local izar descripcio nes de servicio. Si los
clientes del servicio web de XM L conocen la u bicacin de
la descr ipcin de serv icio, pu eden omit ir el p roceso de
descubrimiento.
Descripcin

del Para entender cmo interactuar con un servicio web XML

servicio web XML

determinado, es necesario pr oporcionar una descripcin


de servic io que defina qu

interacciones

admite e l

servicio w eb XM L. Los clien tes del serv icio w eb XM L


deben sabe r cmo interactuar co n un servicio web X ML
antes de poder usarlo.
Formatos

de Para h abilitar la comu nicacin u niversal, los serv icios

conexin

del web XM L s e comuni can usando f ormatos de conexi n

servicio web XML

abiertos, q ue son protocolos


sistema capaz de admitir
comunes.

SOAP es el proto

q ue entiende cualquier
los estndares web ms
colo c lave para

comunicacin del servicio web XML.

Proceso de una llamada al servicio Web XML

89

la

ASP.Net

El proceso que produc e al hacer una l lamada a un servicio web XML es similar al
una llamada a un mtodo normal. L a

proceso que se produce al realizar

diferencia p rincipal es que en v ez de llamar a un mtodo que se e ncuentra en la


aplicacin cl iente, se g enera un mensaje de solicitud a travs

del transporte

especificado, por ejem plo, HTTP. Puesto qu e el m todo de servicio web XML s

puede encontrar en otro equipo, la inform acin que el s ervicio web XML necesit a
para procesar la solicitud se deb

e pasa r po r la r ed al servidor q ue hospeda el

servicio w eb XM L. El serv icio w eb XM L procesa la in formacin y

devuelve el

resultado, a travs de la red, a la aplicacin cliente.

Figura 1.2

Eventos que se producen


La secuencia de eventos que se producen cuando se

llama a un servicio

web

XML:
1. El clien te crea una nueva instancia de la clase de proxy del servicio
web XML. Este objeto reside en el mismo equipo que el cliente.
2. El cliente invoca un mtodo en la clase de proxy.
3. La infraestructura en

el equipo

cliente serializa los argumentos del

mtodo de servicio web XML en un mensaje SOAP y lo enva a travs


de la red al servicio web XML.

90

ASP.Net

4. La infraestructura recibe el mensaje SOAP y deserializa el XML. Crea


una in stancia de la cl ase qu e implemen ta e l servicio w eb XM L e in voca el
mtodo de servicio

web XML, pa

sando el

XML deserializado como

argumentos.
5. El mtodo de servicio web XML ejecuta su cdigo, estableciendo
finalmente el valor devuelto y los parmetros out.
6. La infraestructura en

el serv idor web serializa el valor devuelto y los

parmetros out en un mensaje SOAP y lo dev uelve a t ravs de la red a l


cliente.
7. La in fraestructura del serv icio w eb XML, en el equipo

cliente, recibe el

mensaje SOAP, deserializa el XML en el valor devuelto y los


parmetros out, y los pasa a la instancia de la clase de proxy.
8. El cliente recibe el valor devuelto y los parmetros out.
Generar un servicio web XML
Crear un servicio

web de XML

es simi lar a crear cualquier componente que

proporcione acceso me diante programacin a la lgica de la ap licacin. Para crear


un servicio web XML, necesi tamos al guna fu ncionalidad que i ntegre el servicio
que desea exponer, una descripc in del serv icio que defina cmo u sar el servicio y
una infraestructura para admit ir la recepcin y el proces amiento de solicitudes y el
envo de respuestas.
Generar un cliente de servicio web XML
Puesto que se puede tener acces o a los servicios w eb XM L me diante direcciones
URL, HTTP y XML, est o sign ifica qu e los programas que se ejecuten en
cualquier plataforma y lenguaje podrn tener acceso a los servicios web
XML. Y a qu e la n aturaleza desce ntralizada de los serv icios w eb X ML permit e a l
cliente y al serv icio w eb XM L f uncionar como uni dades aut nomas, exi sten
innumerables formas de usar un s ervicio web XML. Por ejemplo, una llamada a un
servicio w eb XM L pu ede in cluirse en u na aplicac in w eb, u n compon ente de
software int ermedio o in cluso ot ro serv icio w eb XM L. In dependientemente del
formulario que pueda obtener el cliente del servicio web XML, todo lo que hace falta
para llamar a un servicio web XML es enviar un mensaje de solicitud con el formato
correcto que cumpla la descripcin de servicio publicada para ese servicio web XML.
Dependiendo de la n aturaleza del serv icio web XML, podramos en viar a cambio un

91

ASP.Net

mensaje de respuesta. El autor d e la soli citud debe ser capaz, posterior mente, de
extraer la informacin necesaria de este mensaje.
Declaracin de servicios web
Al crear un servicio web en AS
necesaria al principio

P.NET, se

coloca la

directiva @ WebService

de un arch ivo de text o con una extensi n de nombre

archivo .asmx. La presencia del archivo .asmx y

de

la directiva @ WebService pone

en correlac in la d ireccin URL del serv icio web con su impl ementacin. Tambin
implementa la clase d e servicio web qu e define los m todos y tipos de datos
visibles por los clientes de servicios web.
La clase de servicio web que definamos puede inclui rse directamente en e l
archivo . asmx o en

u n arch ivo in dependiente.

Si

usamos

un

archivo

independiente, debe estar compilado en un ensamblado. Opcionalmente,


podemos aplicar un atributo WebService a la c lase que implem enta el ser vicio
web. La clase que implementa

el

servicio web puede derivar de la

clase

WebService.
Podemos establecer e l espacio de nombres XML predeterminado para
servicio w eb ju nto con un a caden a para describir

el

el servicio w eb aplican do e l

atributo WebService opcional a una clase que impl ementa u n servicio w eb. Se
recomienda cambiar este espacio de no mbres predeter minado, que or iginalmente
es http://tempuri.org, antes de que el servicio web se use pblicamente. Esto es
importante porque el s ervicio web debe diferenciarse de otros servicios web q ue
podran u sar in advertidamente el espacio de nombres como valor pr edeterminado
(<http://tempuri.org/>).
Declaracin en el mismo archivo
<%@ WebService Language="VB" Class="Util" %>

Declaracin de implementacin en un ensamblado


<%@ WebService Language="VB"
Class="MyName.MyWebService,MyAssembly" %>

Definicin de mtodos de servicios web


Los mtodos de una clase que implem

entan un servicio we b NO tienen

automticamente la posibilidad de recibir las solicitudes del servicio web y devolver

92


las respuestas, pero c on los servicios

ASP.Net

web creados u tilizando ASP .NET es muy

simple agregar esa capacidad, aplicando el


pblicos. Los mtodos de una clase de se

atributo WebMethod a los mtodos


rvicio web que se pueden comunicar a

travs de Web se denominan mtodos de servicios web.


Los mtodos de servicios web forman una parte clav e de la infraestructura de
mensajera empleada por los servicios web. Es decir, un cliente y un servicio web se
comunican de forma predeterminada

utilizando mensajes, concretamen

te

mensajes SOAP. Los clientes env an una solicitud SOAP a u n servi cio web y un
mtodo de servicios web devuelve normal mente una respuesta SOAP. Los servicios
web definen el tipo de mensajes que aceptan utilizando operaciones, como define el
Lenguaje de descripcin de servicios web (WSDL). Es tas oper aciones ponen
en correlacin cada uno de los mtodos de servicios web dentro de un servicio web.
Aunque ca da uno

de estos mt odos de

servicios web se define en ASP.NET

utilizando un mtodo de una clase, es importante comprender que los datos que se
comunican eventualmente a trav s de l a red se deban
tanto, es importante recordar que los serv
DCOM, si no una

serializar en XML. Por

icios web NO son una susti tucin de

infraestructura de mensajera para comunicarse

entre

plataformas utilizando los estndares de la industria.


<%@ WebService Language="VB" Class="Util" %>
Imports System.Web.Services
Imports System
<WebService(Namespace:="http://www.contoso.com/")>
Public Class Util
Inherits WebService
< WebMethod()> _
Public Function Multiply(a As Integer, b As Integer) As Long
Return a * b
End Function
End Class

2. MTODOS ASNCRONOS
Implementar un mtodo de servicio web asincrnico permite a ese subproce so
ejecutar otro cdigo cuando se devuelve al gr upo de subprocesos. Esto permite la

93

ASP.Net

ejecucin de un subproceso ms que el nme

ro lim itado de subprocesos en e

grupo, mejorando el rendimiento total y la escalabilidad del sistema.


Para implementar un mtodo de servicio web asincrnico
1. Dividiremos un mtodo de servicio web sincrnico en dos mtodos, cada uno
con el mismo nombre base, uno co n ese nombre empezando con Begin y el
otro con End.
2. La lista de parmetros del mtodo Begin conti ene todos l os parmetros in y
by reference para la funci onalidad de l mtodo adems de dos parmetros
adicionales.

Los parmetros By reference se enumeran como parmetros in.

El penltimo parmetro debe ser

AsyncCallback. Este parmetro

permite a un cl iente proporcionar un delegado, que se in voca cuando


finaliza el mtodo. C uando u n mt odo de s ervicio w eb asin crnico
llama a otro mtodo a sincrnico, este parm etro se pue de pasar e n
el penltimo parmetro de ese mtodo.

El ltimo parmetro es

Object. Este parmetro permi

te a un

llamador pr oporcionar informacin de estado al mtodo. Cuando un


mtodo de servicio web asincrnico llama a o tro mtodo asincrnico,
este parm etro se puede pasar

en el lt imo parm etro de es e

mtodo.

El valor devuelto debe ser de tipo IAsyncResult.

3. La lista de parmet

ros para

el

IAsyncResult seguido de cualquier

mtodo

End es t compuesto de

parmetro out y by reference

especfico para la funcionalidad del mtodo.

El val or devuel to es del mi smo t ipo que el valor dev

uelto de un

mtodo de servicio web sincrnico.

Los parmetros By reference se enumeran como parmetros out.

Imports System.Web.Services
<WebService(Namespace:="http://www.contoso.com/")> _
Public Class MyService
Inherits WebService

94

ASP.Net

Public remoteService As RemoteService


Public Sub New()
MyBase.New()
' Crear una nueva instancia de la clase del proxy para
' el servicio Web que llamamos.
remoteService = New RemoteService()
End Sub
' Define el mtodo Begin.
<WebMethod()> _
Public Function BeginGetAuthorRoyalties(ByVal Author As String, _
ByVal callback As AsyncCallback, ByVal asyncState As Object) _
As IAsyncResult
' Begin se comunica asncronamente con un servicio Web XML
' diferente.
Return remoteService.BeginReturnedStronglyTypedDS(Author, _
callback, asyncState)
End Function
' Define el metodo End.
<WebMethod()> _
Public Function EndGetAuthorRoyalties(ByVal asyncResult As _
IAsyncResult) As AuthorRoyalties
' Devuelve el resultado asncrono desde el otro Web service.
Return remoteService.EndReturnedStronglyTypedDS(asyncResult)
End Function
End Class

En la comunicacin de forma as
modelos de diseo de

incrnica con un servicio web se s

iguen los d os

invocacin de mtodos asincrnicos especificados por

.NET Framework.
Wsdl.exe y el modelo de diseo asincrnico de .NET Framework
Cuando la herramienta Lenguaje de descripcin de servicios web (Wsdl.exe)
genera un a clase de proxy cliente par a tener ac ceso a un servic

io web

especificado, proporciona dos mecanismos a la clase de proxy para comunicarse de


forma asincrnica con cada mtodo de servicio web.
El primer mecanismo es el

modelo Begin/End. El segundo m ecanismo es el

modelo de programacin asincrnico orientado a eventos dispon ible en l a


versin 2.0 de .NET Framework.
El modelo de invocacin Begin/End

95

ASP.Net

Wsdl.exe c rea automti camente tres mtodos para ca da operacin (un mto do
de servicio web en AS P.NET) publicada en el servicio web. Un mtodo es para el
acceso sincrnico; los otros dos son para el acceso asincrnico.
NOMBRE DE MTODO EN CLASE
DE PROXY

DESCRIPCIN

<NameOfWebServiceMethod>

Enva sincrnicamente un mensaje para el


mtodo de servicio web

denominado

<NameOfWebServiceMethod>.
Begin<NameOfWebServiceMethod>

Comienza la comunicacin asincrnica del


mensaje con un mto do de servici o web
denominado
<NameOfWebServiceMethod>. El
cliente indic a al mtod o Begin que in icie
el procesamiento de la llamada del
servicio, pero que vuelva inmediatamente.
El val or devuel to no es el tipo de datos
especificado por el
web, si no un

mtodo de

servicio

tipo que implementa la

interfaz IAsyncResult.

End <NameOfWebServiceMethod>

Finaliza una comuni cacin asi ncrnica del


mensaje con un mto do de servici o web
denominado
<NameOfWebServiceMethod>,
devolviendo u n v alor q ue es e l re sultado
de la llamada del mtodo de servicio web.

Los mtodos Begin y End siguen la nomenclatura del modelo de diseo asincrnico
de .NET F

ramework. El modelo de di

seo indica

asincrnicos con nombre para cada mtodo sincrnico.

96

que existen dos mtodos

ASP.Net

Implementar un cliente de servicios web que realiza una llamada al


mtodo asincrnico mediante el modelo Begin/End
Cmo sabe un client e cundo llamar a l mtodo End ? Hay dos
implementar un cl iente con el fin de dete

rminar esto, como se

tcnicas para
define en .NET

Framework:

La tcnica de espera: usa uno de los mtodos de la clase WaitHandle


para hacer que un cliente espere a que el mtodo finalice.
La clase WaitHandle implementa mtodo s que permiten espera r que se
sealen l os objetos d e si ncronizacin: WaitOne, WaitAnyy WaitAll. La
seal de un objeto de sincronizacin es una indicacin de

que los

subprocesos esperarn hasta el recurso especificado pueda tener acceso al


recurso. El cliente de servicios web tiene acceso a un objeto WaitHandle a
travs de

la propiedad AsyncWaitHandle del

objeto IAsyncResult

devuelta por el mtodo Begin.

la tcnica de devolucin de llamada: pasa una funcin de devolucin


de llamada al mtodo Begin, al que se llama ms tarde para recuperar
los resultad os cuando el mtodo ha terminado de procesarse. Con esta
tcnica, una f uncin de dev olucin de llam ada impl ementa el delegado
AsyncCallback, que exige la firma:
public void MethodName(IAsyncResult ar)

Si la devoluci n de llamada requi

ere un contexto de si

ncronizado/afinidad del

subproceso, se enva a travs de la infraest ructura de distribuidor de contextos. Es


decir, la devolucin de llamada podra e jecutar de forma asincrnica con respecto a
su llamador para tales contexto

s. sa precisamente es la

calificador unidireccional en fi rmas de

semntica del

mtodo. Es o significa que c

ualquier

funcin de llamada a l mtodo podra ejecutarse de form a sincrnica o as incrnica


con respecto al llamador remoto, y el llamador no podra hacer ni nguna suposicin
sobre la realizacin de este tipo de llamada cuando el control de ejecucin vuelva a
l.
La llamada al mtodo End an tes de qu e la operacin asin crnica h aya f inalizado
bloquear el llamador . El compo rtamiento de llamarlo una segunda ve
mismo IAsyncResult devuelto por el mtodo Begin es imprevisible.

97

z co n el

ASP.Net

3. TRANSACCIONES EN SERVICIOS WEB XML

Las transacciones enlazan varias tareas.


Por ejemplo , imaginem os que una aplicac in realiza dos tareas. Primero, crea una
nueva tabl a en una

base de datos. Lu ego, llama un objeto esp

ecializado para

recoger, dar formato e insertar los datos en la nueva tabl a. Estas do s tareas estn
relacionadas e in cluso son in terdependientes, de tal ma nera que s e desea evitar
crear una nueva tabla a menos que pueda llenarse de datos. La ejecucin de ambas
tareas dentro del mbito de una nica transaccin refuerzan la conexin entre ellas.
En caso de error en la segunda

tarea, la primera vuelv e al punto

anterior a la

creacin de la nueva tabla.


Para asegurarse el comportamiento predecible, toda s las trans acciones deben
poseer las

propiedades ACID bsicas (atmico, coherente, aislado y

duradero). Estas prop iedades ref uerzan la funcin de transacciones crticas p ara
una misin como proposiciones tod os-o-ninguno, garantizando que un conjunto d e
tareas relac ionadas tenga xito o que pr oduzca un error como una uni dad. E n la
terminologa del procesamiento de transacci ones, la transaccin interrumpe o
procesa el procesamiento.
Todos los participantes deben garantizar para que se produzca una transaccin que
cualquier cambio a los datos ser permanente.
Los cambios deben co nservarse a pesar de bloqueos del sistema u

otros eventos

imprevistos. Tan slo producindose un error en uno de los part icipantes al realizar
la garanta, la transaccin entera genera un error.
Todos los c ambios de los datos

dentro del mbito de la transac cin se deshacen

hasta un punto fijo concreto.


Una transaccin se puede confinar a un re curso de dato nico, com o una base de
datos o un a col a de mensajes. El Admi nistrador de la Transaccin proporcionado
por System.Transactions, q ue genera l a gananci a de rendimiento admi nistra la
transaccin local en este escenar

io. Cont roladas por el

recurso de datos, esta s

transacciones son eficaces y fciles administrar.


Las

transacciones

distribuidas dan la capacidad para incorporar varias

operaciones distintas que se producen en

sistemas diferentes en un paso nico o

98

ASP.Net

producir un error en la accin. El coordinador de transacciones distribuidas de


Microsoft (MSDTC) que reside en cada sistema coordina las transacciones en este
escenario.
Al desarro llar una aplic acin transaccional utilizando las c lases propo rcionadas por
System.Transactions, no nec
transacciones necesita o

esitamos

preocuparnos por qu tipo

el a dministrador de tran

infraestructura System.Transactions administra auto

de

sacciones implicado.

La

mticamente stos p

ara

nosotros.
Cuando creamos una transacci n, podemos especificar el
que se aplica a la tr

nivel de aislamiento

ansaccin. El nive l de aislamient o, definido por la

clase

IsolationLevel, determina qu nivel de otras transacciones de acceso tendrn los


datos afectados por su transaccin.
La compatibilidad de transacciones con servicios web aumenta la compatibilidad
que se encuentra en

Common Language Runtime, que se basa en el mismo

modelo de transacciones distribuidas que se encuentran en Microsoft Transaction


Server (MTS) y en los Servicios COM+.
El modelo se basa en decidir mediante una declaracin si un objeto participa en una
transaccin, en lugar de escrib ir el cdigo concreto que se va a administrar para
confirmar y deshacer una transaccin. En un servicio web XML creado con ASP.NET,
podemos declarar el comportamiento
estableciendo la

de las transacciones del

servicio web

propiedad TransactionOption del atributo WebMethod

aplicada al mtodo de servicio web.


Si se gener a una excepcin mientras se

est ejecutando un mtodo de servic

io

web, la transaccin se anul a auto mticamente; por el c ontrario, si no se genera


ninguna excepcin, la transaccin se confirma automticamente.
La propiedad TransactionOption del atributo WebMethodAttribute especifica
cmo part icipa u n mtodo de serv icio w eb en un a transaccin. Aunqu e est e nivel
declarativo representa la lgica de u na transaccin, es un paso que se ha quitado
de la trans accin fsica. Una

transaccin fsica se produce cuando un objet

transaccional tiene acceso a un recurso de da tos, como una ba se d e datos o una


cola de mensajes. La transaccin asocia

da al

objeto pasa automticamente a l

administrador de recursos adecuado.


Un proveedor de datos de .NET Framework, como el Proveedor de datos de .N ET
Framework para SQL Server o el Proveedor de datos de .NET Fr

99

amework para

ASP.Net

OLE DB, b usca la transaccin en el contexto

del objeto y se incorpora en

la

transaccin a travs d el Coordinador de transacciones distribuidas (DTC). Se


produce toda la transaccin automticamente.
Los mtodos de servicio web slo pu eden participar en una transaccin como la
raz de una nueva tran saccin. Co mo l a ra z de una nue va transacc in, todas las
interacciones con los

admi nistradores de recursos, como

ejecutan Microsoft SQ L Server,

los servidores que

Message Queue Server de Micro

conocido como MSMQ) y Microsoft Host

soft (tambin

Integrati on Server manti

enen l as

propiedades ACID e xigidas para ejecutar aplicac iones distribuida s robustas. Los
mtodos de servicio web que llaman a otro s mtodos de s ervicio web participan en
transacciones diferent es, po rque las transacciones no

pasan por los mtodos d e

servicio web.
Para participar en una transaccin de un mtodo de servicio web
1. Declaramos un servicio web.
<%@ WebService Language="VB" Class="Orders" %>

2. Agregamos una directiva Assembly a System.EnterpriseServices.


<%@ Assembly
name="System.EnterpriseServices,Version=1.0.3300.0,Culture=neutral,PublicKeyToken=b03f5
f7f11d50a3a" %>

3. Agregue referencias a los espacio s de nombres

System.Web.Services y

System.EnterpriseServices.
Imports System.Web.Services
Imports System.EnterpriseServices

4. Declare u n mtodo de serv


TransactionOption

del

icio web, establec


atributo

iendo la

WebMethodAttribute

System.EnterpriseServices.TransactionOption.RequiresNew.
< WebMethod(TransactionOption:=TransactionOption.RequiresNew)> _
Public Function DeleteAuthor(lastName As String) As Integer

100

propiedad
como

ASP.Net

4. PROTEGER SERVICIOS WEB XML . SOAP


La decis in de qu implementacin de seguridad es mejor para un Servic io W eb
comienza por el exam en de dos principios d e seguridad clave: autenticacin y
autorizacin.
La autenticacin es el proces

o de validar una identidad basada en las

credenciales, como un nombre de usuari


Cuando una identidad

o y contras ea, contra una au toridad.

ha sido autenticada, la

autorizacin determina si

esa

identidad est autorizada para acceder a un recurso.


Los Servicios Web creados con ASP.NET pueden elegir sus opcione s de seguridad
a partir de las opciones de autorizacin y autenticacin proporcionadas por ASP.NET
o la seguridad personalizada basada en SOAP.
ASP.NET f unciona en combinacin con los serv icios d e in formacin de internet
(IIS) para proporcionar varias opciones de aut enticacin y autorizacin, utilizando
tambin las opciones de autenticacin personalizada, como el uso de encabezados
SOAP. Adems, ASP.NET proporciona la

capacidad, conoci da como la

suplantacin, de ejecutar una solicitud mediante las credenciales del cliente.


Como vemos tenemos varias opciones para
correcta?, una de las cosas entr

elegir, pero cmo saber cul es la

e la s que tendremos que elegir

es el nivel de

seguridad y de rendimiento. Para algunos Servicios Web, es impo rtante que las
credenciales del cliente se enven a travs de la red utilizando el cifrado, por lo que
es esencial un algoritmo que cifre las credenciales del cliente.
La siguiente tabla es un resumen de las opciones de au tenticacin disponibles para
los Servicios Web generados con ASP.NET.
OPCIONES
DE
AUTENTICACIN.
DESCRIPCIN
Windows: Basic

Se utilizar para la identificacin no segura de clientes, ya que el


nombre de

usuario y

la contrasea se env a en cadenas de

codificacin de bas e 64 en texto si n formato. Las contraseas y


nombres de usuario estn codi ficados, pero no cifrados, en este
tipo de autenti cacin. Un usuari o ma lintencionado determi nado,
equipado co n una herra mienta de s upervisin de l a red puede
interceptar nombres de usuario y contraseas.

Windows:

Basic

Se utilizar para la identificacin segura de clientes en escenarios

101


sobre SSL

ASP.Net

de Intern et. El nombre de usuari o y contrasea

se env an a

travs de l a red utilizando el cifrado de Capa d e sockets seguros


(SSL), e n lugar d el t exto s in fo rmato. Es r elativamente f cil de
configurar y funci ona para l os escena rios de Inter net. Al ut ilizar
SSL, sin embargo, se degrada el rendimiento.

Windows:

Se utilizar para la identificacin segura de clientes en escenarios

autenticacin

de Intern et. Utili za un

implcita

credenciales del cliente de una maner a cifrada de manera que l a

algoritmo hash para tra

nsmitir as

las

contrasea no se tr ansmite en tex to no ci frado. Adems,

la

autenticacin implcita puede funcionar a travs de los servidores


proxys. S in embar go, no se a

dmite ampl iamente en

otras

plataformas.

Windows: Windows

Utiliza NTLM o Kerbero s. Utili za un i ntercambio cri ptogrfico co n

integrada

el explorador web Microsoft Internet Explorer del usuario.

Windows:

Se utilizar para la identificacin segura de clientes en escenarios

certificados

del

cliente

de Int ernet e i ntranet. Exi ge a cad a cl iente que obt enga u n


certificado d e u na e ntidad e misora d e c ertificados d e mu tua
confianza. Los certi ficados estn asi gnados opci onalmente a l as
cuentas de u suario, que son uti lizadas por IIS para autori zar el
acceso al Servicio Web.

Formularios

No compatible con el Servicio Web. ste es un sistema por el que


las solicitudes no autenti cadas se r edirigen a un formul ario HTML
utilizando redireccin Http del cliente. La mayora de los clientes
de Servicio Web no d esearn proporcionar credenciales mediante
una i nterfaz de usuari o; deber tra bajar sobre est a cuesti n si
desea utilizar la autenticacin de formularios.

Encabezados SOAP.

til para escenari os de Internet se

Personalizado

credenciales del usuari o se pasan den tro del encabezado S OAP

guros y no seguros. Las

del mensaje SOAP. E

l servi dor web, si n tener

en cuenta la

plataforma que hosp

eda el S ervicio Web, pro porciona una

implementacin de autenticacin personalizada.

Para todas las opcio

nes enumeradas an teriormente, excepto para el uso de

encabezados SOAP , la con figuracin de

seguridad se especif ica utilizando u na

combinacin de archivos de configuracin e IIS.

102

ASP.Net

Autenticacin de Windows
IIS y ASP.NET proporcionan la compatibilidad para autenticar las aplicac iones
web, in cluso los Serv icio Web, u tilizando la seguridad integrada en Windows.
Windows proporciona tres opciones para

la au tenticacin: Basic, Au tenticacin

implcita y Windows integrada. Adems, cada opcin se puede utilizar con SS L. Ya


que todas las opciones de autenticacin de Windows, excepto Basic, cifran los datos
en al gn formul ario, el ni vel de cifrado adicional proporc ionado por SSL se utiliza
normalmente slo junto con Basic o Certificados del Cliente.
Sin tener en cue nta q ue opcin de

autenticacin de Windows se u tiliza, los

procedimientos para preparar el Serv icio Web y el cli ente de serv icios w eb son
similares. No se n ecesita agregar nada de cdigo a un Servicio Web para u tilizar la
autenticacin de Wi ndows, c uando l as opci ones de autenticacin se establecen en
un archi vo de confi guracin e IIS. Se de be agregar u n cdigo a un cliente de
servicios web para pasar las credenciales del cliente al Servicio Web.
Si SSL se el ige como la part e d el mecan ismo de au tenticacin u tilizada po r u n
Servicio W eb, necesitamos configurarlo
Servicio W eb o para el propi

para la aplicacin web que hospeda el

o Serv icio We b, ut ilizando IIS. L a descripcin del

servicio y, por consiguiente, las clases de proxy generadas a partir de la descripcin


del se rvicio ref lejarn que el Ser vicio Web utiliza SSL ( si se t iene acceso a l a
descripcin del se rvicio y pgin a de ay uda del s ervicio u tilizando SSL ). La
direccin URL al Servicio Web dentro de la descripcin del servicio se
prefijar con Https.

Autenticacin de certificados de cliente


Los certificados de cliente ayudan a propor cionar un mecanismo seguro para la
autenticacin, y a qu e ex igen a los clien tes que enven un do cumento electrnic o,
denominado certificado de cliente, que identifica al cliente utilizando una conexin
SSL al servidor web. La conexin SSL cifra las credenciales del clien te contenidas
dentro del cert ificado de clien te como qu e se envan a travs

de la red. La

comunicacin entre el cliente y el servidor web se ci fra utilizando una combinacin


de las claves de cifrado enviadas

por el cliente y las claves proporc ionadas por el

servidor w eb. Un a v ez est ablecida la com unicacin, slo los equipos servidores y
cliente pueden comunicarse entre s utilizando esa conexin SSL.

103

ASP.Net

Opciones de la autorizacin para los servicios web de XML


El propsito de la autorizacin es determinar si una identidad se debera permitir
el t ipo solicitado de

acceso a un recur

so determinado. Hay dos maneras

fundamentales de autorizar el a cceso a un recurso determinado: autorizacin del


archivo y autorizacin de URL. Se pu ede u tilizar la au torizacin del arch ivo
siempre qu e se u tiliza la au tenticacin de Win dows, y a qu e los permisos

se

establecen en IIS en una base por archivo. La autorizacin de URL se puede utilizar
con cualquiera de los meca

nismos de autenti cacin integrados admitido

por

ASP.NET. Con autorizacin de URL, l a configuracin se hace a travs de un archi vo


de confi guracin, dond e se puede n co nceder o denegar el acceso a l os usuari os a
cualquier archivo asociado a ASP.NET, incluso archivos .asmx, de manera selectiva.
Autenticacin personalizada utilizando los encabezados SOAP
Los mecanismos de autenticacin de Windows, incluso los certificados de
cliente,

confan

en

el

transporte

HTTP,

mientras

que

SOAP

es

independiente del transporte. Los Servicio Web gen erados con A SP.NET utilizan
SOAP sobre Http, as como imp

lementaciones HTTP-POST y

HTTP-GET que

devuelven los documentos XML de no SOAP. As que, una razn para crear un
mecanismo de aut enticacin per sonalizada es desacoplar la autenticacin del
transporte. Esto se pu ede l ograr pasando las credenciales de aute nticacin en el
encabezado SOAP.
Los encabezados SOAP son

una b uena manera de pasar fu

era de banda o

informacin n o relac ionada con la semntica de u n Serv icio Web. A diferencia d el


elemento Body de un mensaje SOAP, que incluye los parmetros in y out para la
operacin del Serv icio Web qu e son procesados por el mtodo de servicio Web, el
elemento Header es o pcional y e s procesado as po r la infraestructura. Es de cir,
procesado por una infraestructura desarrollada para proporcionar un mecanismo de
autenticacin personalizada.
Para u tilizar los en cabezados SOAP para la au tenticacin, un clien te de serv icios
web enviara sus credenciales

al Servic io Web agreg ando el encabezado SOAP

esperado, a la solic itud SOAP y rellenndol o c on las credenciales del cliente. Pa ra


utilizar la a utenticacin del en cabezado SOAP , un Serv icio Web de be h acer dos
cosas: especificar que espera el encabezado SOAP que co ntiene las credenciales de
autenticacin y autorizar el acceso de cliente al Servicio Web.

104

ASP.Net

<%@ WebService Language="VB" Class="MyWebService" %>


Imports System.Web.Services
Imports System.Web.Services.Protocols
' Define a SOAP header by deriving from the SoapHeader base class.
Public Class MyHeader : Inherits SoapHeader
Public Username As String
Public Password As String
End Class
<WebService(Namespace:="http://www.ejemplo.com")> _
Public Class MyWebService
' Add a member variable of the type deriving from SoapHeader.
Public myHeaderMemberVariable As MyHeader
' Apply a SoapHeader attribute.
<WebMethod, SoapHeader("myHeaderMemberVariable")> _
Public Sub MyWebMethod()
' Process the SoapHeader.
If (myHeaderMemberVariable.Username = "admin") Then
' Do something interesting.
End If
End Sub
End Class

5. IMPLEMENTAR Y PUBLICAR SERVICIOS WEB XML


5.1 IMPLEMENTACION
Implementar

un

servicio web implica

copiar el

archivo .asmx y

los

ensamblados usados por el servicio web que no se s uministra como una parte de
Microsoft .NET Framework en un directorio virtual en un servidor web.
El descubrimiento de servicios web es el proceso

de loca lizar e interrogar

descripciones de servicios web, que son un paso preliminar para tener acceso a un
servicio web. A t ravs del proceso de descu brimiento, los clien tes de serv icios web
pueden obten er in formacin en t iempo de di seo de la existencia de u n serv icio
web, c ules son sus

funciones y cmo in teractuar correctamente con l, a este

proceso se conoce como la deteccin del servicio web.

105

ASP.Net

Se pu ede u tilizar la h erramienta Web Services Discovery (Disco.exe) desde el


smbolo del sistema para realizar la dete

ccin del serv icio w eb en una direccin

URL.
Disco

/out:location /us

ername:user /pas

sword:mypwd /do

main:mydomain

http://www.ejemplo.com/my.disco

Los servicios web se hacen disponibles a


descubrimiento que

los usuari os u sando u n mecani smo de

normalmente obtiene

descubrimiento, u n d ocumento

XML que

el formulario de un documento de
puede con tiene v nculos a otros

documentos de descubrimiento, esquemas XSD y descripciones del servicio en el


Lenguaje de descripcin de servicios web (WSDL). Desde estos documentos
se pueden determinar qu servicios estn disponibles para ellos.
Hay tres maneras que un cliente potencial d e servic ios web puede tener acceso a
un documento de descubrimiento:

Archivo de descubrimiento esttico: Pu blicaremos u n archivo de


descubrimiento, nor malmente con una ex tensin de nombre de
.disco. Los usuarios pueden examinar

archivo

un archivo de descubrimien to

especfico o a la raz d e la aplicacin web si la pgina web predeter minada


tiene un vnculo al archivo. Un archivo .disco puede contener refere ncias a
cualquier nmero de servicios web.

?cadena de consulta ?disco: Un servicio web que se ejecuta en ASP.NE T


puede tener un documento de descubrimiento generado dinmicamente
para l. Un documento de descubr imiento se genera aut omticamente para
un servicio web cuando se ti

ene acceso al mismo usando una direccin

URL con ?DISCO que se proporciona e


ejemplo, si la

direcci

n la

n URL a un servicio

www.pruebas.com/getquote.asmx, a

cadena de consul ta. Por


web

es

continuacin, se genera

automticamente un documento de descubrimiento con una direccin URL


www. pruebas.com/getquote.asmx?DISCO. El documento de descubrimiento
slo se aplica a ese servicio web.

.Solicitud .vsdisco: Se puede activar el

descubrimiento dinmico para

permitir a l as aplicac iones de clie nte de servicios w eb descu brir t odos los
servicios web disponibles en la carpeta y subcarpetas que corresponden a la
direccin URL de una solic itud. No es necesario crear ningn documento de
descubrimiento esttico . Cuando s e acti va el descubrimiento dinmico para

106

un servidor web, si queremos gene

ASP.Net
rar un proxy de cliente podemos

especificar una direccin URL qu e haga referenci a a u n archi vo con una


extensin .vsdisco, co mo www. p ruebas.com/default.vsdisco, en el cuadro
de dilogo Agregar referencia Web.
Para implementar el serv icio web, crearemos u n directorio virtual en nuestro
servidor web y colocaremos el arc hivo .asmx del servicio web en ese directorio.
El direct orio v irtual t ambin deber a ser u na aplicac in w eb de l os serv icios de
Internet

Information

Server

(IIS), aunq ue no es necesari

o. Una

implementacin tpica tendra la siguiente estructura de directorios:


\Inetpub
\Wwwroot
\StockServices
StockServices.asmx
\Bin
Ensamblados usados por el servicio web que no

forman parte

de Microsoft .NET Framework.


Al publicar un servicio web, los sigu ientes elementos se implementa n a un servi dor
web.
ELEMENTO

DESCRIPCIN

Directorio de aplicacin Web

Acta como el directorio raz de su se rvicio web. Todos


los archivos restantes se colocan en este directorio.
Este di rectorio deber a marcarse com o una apli cacin
web de IIS.

Archivo

Acta como la di reccin URL base para los clientes que

<MyXMLWebService>.asmx

llaman al se rvicio web. El nombre del archi vo p uede


ser cualquier nombre de archivo vlido.

Archivo

(Opcional). Acta como mecani smo de descubri miento

<MyXMLWebService>.disco

para el servi cio web XML. El archivo .di sco no se crea


automticamente para un servicio web XML. El nombre
del a rchivo puede s er cu alquier n ombre de a rchivo
vlido.

Archivo Web.config

(Opcional). Si n ecesita in validar lo s p armetros de

107

ASP.Net

configuracin predeterminada, puede i ncluir un archi vo


Web.config. Los servi cios web usan
configuracin p ara pe rmitir la

el archi vo de

p ersonalizacin y

extensibilidad del sistema.


Por ej

emplo, puede

proporci

onar un archi

vo

Web.config e specfico del servi cio web si ste re quiere


autenticacin, p ero s i o tras a plicaciones we b d el
sistema no la necesitan.
Directorio \Bin

Contiene lo s a rchivos b inarios p ara e l servicio we b. Si


su cl ase de servicio web no est en el mi smo arc hivo
que el archi vo . asmx, e l ensambl ado que conti ene l a
clase debe estar en el directorio \Bin.

Habilitar la deteccin de servicios web XML


Los servicios web se

pueden p ublicar a los clientes potenciales de las maneras

siguientes:

Usando un archivo de descubrimiento XML con una exten sin de nombre de


archivo .disco.

Usando una direccin URL que especifica una extensin .vsdisco.

Usando un servicio web con una cadena de consulta ?DISCO.

5.2 PUBLICACIN
Publicar un documento de descubrimiento esttico para un servicio web
1. Creamos un documento XML con

cualquier e ditor, agregan do el elemento

?xml version="1.0" ? en la primera lnea.


2. En el documento XML agregamos un elemento discovery
<disco:discovery
xmlns:disco="http://schemas.xmlsoap.org/disco/">
</disco:discovery>

3. En e l elemento discovery, ag regamos referencias a descripciones de


servicios, esquemas XSD y otros documentos de descubrimiento.

108

ASP.Net

Podemos agregar tantas referencias co mo queramos exponer pblic amente.


Las referencias de descripcin de servicio se especifican en un documento de
elemento contractRef con el esp acio de

descubrimiento agregando un

nombres XML http://schemas.xmlsoap.org/disco/scl/. Igualmente, las


referencias a otros

documentos de

descubrimiento y esquemas XSD

se

discoveryRef y elementos XML schemaRef,

especifican agregando

respectivamente. Para obtener refere ncias de esquemas XSD, s

e debe

especificar el http://schemas.xmlsoap.org/disco/schema del espacio


de nombres XML. Pa

ra los tres ti

pos de documentos de referencia,

especificamos la ubicacin del documento con el atributo ref. El ejemplo de


cdigo siguiente tiene re ferencias a un docu mento de descubri miento, una
descripcin de servicio y un esquema XSD.
<?xml version="1.0"?>
<discovery xmlns="http://schemas.xmlsoap.org/disco/">
<discoveryRef ref="/Folder/Default.disco"/>
<contractRef ref="http://MyWebServer/UserName.asmx?WSDL"
docRef="Service.htm"
xmlns="http://schemas.xmlsoap.org/disco/scl/"/>
<schemaRef ref="Schema.xsd"
xmlns="http://schemas.xmlsoap.org/disco/schema/"/>
</discovery>

Las referencias pueden ser relativa s al directorio donde reside el documento


de descubrimiento, como se muestra en el elemento discoveryRef o a un
URI, como se muestra en el elemento contractRef.
4. Implementamos el do cumento de de scubrimiento en u n serv idor w eb
copindolo en un directorio virtual del mismo.
5. Opcionalmente, si queremos permitir a los posibles usuarios navegar a una
direccin URL especificando una a plicacin IIS si n tener que especi ficar un
documento, podemos agregar un vnculo a la pgina predeterminada de la
aplicacin IIS. Est o tiene la v entaja de que l os posibles usuarios no tienen
que saber

el nombre de ni

ngn documento de descubrimiento. Los

usuarios pueden proporcionar a

cont inuacin direcciones URL c

siguiente durante el proceso de descubrimiento:


http://MyWebServer/MyWebApplication

109

omo la

ASP.Net

Si la pg ina predeterminada de la aplicac in web es una documento XML,


agregaremos un vnculo al documento de descubri miento en el elemento
head de la pgina web predeterminada para el servidor web. Por ejemplo:
<HEAD>
<link type='text/xml' rel='alternate' href='MyWebService.disco'/>
</HEAD>

Si la pg ina predeterminada de la

aplicacin web es una pgina HTML,

agregaremos un vnculo al documento de descubri miento en el elemento


de head de la pg ina web pr edeterminada para el servidor

web. Por

ejemplo:
<?xml-stylesheet type="text/xml" alternate="yes"
href="MyWebService.disco" ?>

Habilitar el descubrimiento dinmico para un servicio web


Para activar la

deteccin di nmica en un servi

dor web, modifique el

archivo

machine.config agregando el s iguiente elemento <add>. Omita los salt os de


lnea en el ejemp lo s iguiente cuando el

atributo type deba estar en una lnea

<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="*.vsdisco"
type="System.Web.Services.Discovery.DiscoveryRequestHandler,
System.Web.Services, Version=1.0.3300.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
validate="false"/>
</httpHandlers>
</system.web>
</configuration>

110

6.

ASP.Net

HERRAMIENTAS DE SERVICIOS WEB XML

6.1 WSDL.EXE
Esta herramienta genera cdigo para serv icios web XML y clientes de servicios web
XML de ASP.N ET a pa rtir de archivos de contrato WSDL, esquemas XSD y
documentos de descubrimiento (.discomap).
Un archivo .wsdl es un documento XM L es crito con u na gramti ca denomi nada
Lenguaje de descripcin de servicios Web (WSDL). En este archivo se
describe cmo se comporta un se rvicio web XM L y cmo se in struye a los clie ntes
para que interacten con el servicio.
Cuando se utiliza Wsdl.exe para crear una
archivo de cdigo fuente en el lenguaje

clase de proxy, se crea un nico

de programacin especificad o. Durante el

proceso de generacin del cd igo fuente para la c lase de proxy, la herramienta


determina el t ipo m s adecu ado para u tilizarlo con los o bjetos especif icados en l a
descripcin de servicio. En algunos ca

sos, l a herrami enta usa

un en foque de

denominador menos comn para convertir los objetos a un tipo determinado. Como
consecuencia, es posible que el tip o genera do en la clase de proxy
deseamos o esperam os. Por ej

no sea el que

emplo, cuando Wsdl.exe encuentra un

tipo

ArrayList en una des cripcin de servicio, crea Object Array en la clase de proxy
generada. Para garantizar que las conversi ones de tipo de objeto s ean correctas,
abriremos el archivo que contiene la c lase d e proxy generada y cambiaremos los
tipos de objeto incorrectos al tipo de objeto esperado.
wsdl [options] {URL | path}

Los argumentos que tiene son:

Direccin URL: Direccin URL de un archivo de contrat o WSDL (.wsdl), de


un archivo de esquemas XSD (.xs d) o de un documento de descubrimiento
(.disco). Hay que tener en cuenta que NO se puede especificar una direccin
URL de un documento de descubrimiento (.discomap).

Ruta de acceso (path): Ruta d e acceso a un archivo

local de contrato

WSDL (. wsdl), a un archi vo de esquema XSD (.xsd) o a un docum


descubrimiento (.disco o .discomap).

111

ento de

ASP.Net

Las opciones que tenemos pueden ser:


OPCIN

DESCRIPCIN

/appsettingurlkey:clave

Especifica l a cl ave de co nfiguracin q ue se usa

O bien

leer el val

/urlkey:clave

direccin URL cuando se genera cdi go. Cuando se usa

or predet erminado de l

para

a propi edad de

la opci n /parameters, este val or es

el el emento

<appSettingUrlKey> y contiene una cadena.


/appsettingbaseurl:direccinurlbase

Especifica la di reccin URL bas e que se uti

O bien

calcular el fragmento de di

/baseurl:direccinurlbase

herramienta cal cula el

liza al

reccin URL.

Esta

fragmento de di reccin URL

convirtiendo l a di reccin URL re

lativa desde el

argumento direccinurlbase en la direccin URL que


contiene el documento WSDL. Con est a opcin se debe
especificar l a opci n /appsettingurlkey. Cuand o se
usa l a opcin
elemento

//parameters, este val

<appSettingBaseUrl>

or es el

y conti ene una

cadena.
/d[omain]:dominio

Especifica e l n ombre del d ominio q ue s e u tiliza para


conectarse a un servi dor que requi era autenti cacin.
Cuando se usa la opcin /parameters, este valor es el
elemento <domain> y contiene una cadena.

/l[anguage]:lenguaje

Especifica e l le nguaje q ue s e u tiliza para la c lase d e


proxy gener ada. Como argumento d e l enguaje pu ede
especificar CS (C#; val or pred eterminado), V B (Visual
Basic), J S ( JScript) o

VJS (Vi sual J #). Tambi n se

puede espe cificar e l nombre compl eto de l a c lase que


implementa
System.CodeDom.Compiler.CodeDomProvider (Cl ase).
Cuando se usa la opcin /parameters, este valor es el
elemento <language> y contiene una cadena.
/n[amespace]:espaciodenombres

Especifica el espacio de n ombres del proxy o pl antilla


generados. La opcin predeterminada es el espacio de
nombres gl

obal. Cua

/parameters, este val

ndo se u
or

sa l
es el

a opci

elemento

<namespace> y conti ene una caden a. Este el emento


debe estar en el archivo de parmetros.
/nologo

Suprime la presentacin d e la p ortada d e in icio d e

112

ASP.Net

Microsoft. Cuando se uti liza l a opci n / parameters,


este valor es el elemento <nologo> y contiene true o
false.
/order

Genera i

dentificadores de or

den expl

citos en

miembros de partcula.
/o[ut]:nombredearchivo o

Especifica el archivo (o di rectorio) en el que s e guarda

nombrededirectorio

el cdi go proxy generad o. Tambi n puede espe cificar


un directorio en el que s e podr crear este archivo. La
herramienta deri

va el

nombre de arc

hivo

predeterminado del nomb re de s ervicio web XML.

La

herramienta guarda l os c onjuntos de datos g enerados


en vari os

archivos.

Cuando se usa l

/parameters, este val or es el

a opc in

e lemento <out> y

contiene una cadena.


/parameters

Lee las opciones de lnea de comandos del archivo XML


especificado. Usaremos esta opcin para pasar un gran
nmero de

opciones de una vez a l

a herramienta

Wsdl.exe. La forma abrevi ada es / par:. Los el ementos


de opci

n se encu

entran en

un el

emento

<wsdlParameters
xmlns="http://microsoft.com/webReference/">
.
/parsableerrors

Muestra l os errores en u n formato simil ar al for mato


de lo s in formes de er rores q ue u san lo s c ompiladores
de l enguajes. Cuando se usa l a opci n / parameters,
este val or e s el el emento <parsableerrors> y es
true o false.

/p[assword]:contrasea

Especifica la contrasea que se utiliza para conectarse


a u n s ervidor q ue re quiere a utenticacin. Cu ando s e
usa l a opci n /parameters, este val or es el el emento
<password> y contiene una cadena.

/protocol:protocolo

Especifica el protocol o que se i mplementa. Se puede


especificar SOA P (el val or pred eterminado), Http Get,
HttpPost o

el

protocol o personali zado que se

especifique e n el archi vo de confi guracin. Cuando se


usa l a opci n /parameters, este val or es el el emento
<protocol> y contiene una cadena.

113


/proxy:direccinURL

ASP.Net

Especifica l a di reccin URL del servi dor proxy u sada


para las solicitudes HTTP. La opcin predeterminada es
que se us e la configuracin del sistema proxy. C uando
se usa l

a opci n / parameters, este val

or es el

elemento <proxy> y contiene una cadena.


/proxydomain:dominio

Especifica el dominio que se usa para conectarse a un

O bien

servidor proxy que requiere autenti cacin. Cuando se

/pd:dominio

usa l a opci n /parameters, este val or es el el emento


<proxydomain> y contiene una cadena.

/proxypassword:contrasea

Especifica la contrasea que se usa para conectars e a

O bien

un s ervidor proxy q ue r equiere a utenticacin. Cu ando

/pp:contrasea

se usa l

a opci n / parameters, este val

or es el

elemento <proxypassword> y contiene una cadena.


/proxyusername:nombredeusuario

Especifica el nombre de usuari

O bien

conectarse

/pu:nombredeusuario

autenticacin. Cuando se usa l a opci n / parameters,

a un serv

o qu e se usa para

idor proxy que

requ iere

este val or es el el emento <proxyusername> y


contiene una cadena.
/server

Genera una clase abstrac ta para un s ervicio web XML


basada en c ontratos. El val or predet erminado es que
se g eneren c lases de proxy cli ente. Cuando se us a l a
opcin /parameters, este val

or e s un el

emento

<style> que contiene el valor "server".


/serverInterface

Genera i nterfaces para

l a i mplementacin en el

servidor de un servi cio web ASP.NET. Para cada enl ace


en l os docu mentos WS DL se

genera una i nterfaz.

WSDL por s sol o implementa el contrato WS DL (l as


clases que i mplementan l a interfaz no deben i ncluir lo
siguiente en los mtodos de clase: atributos de servicio
web o atri

butos de s

erializacin que cambi en el

contrato WSDL). La forma abrevi ada es /si. Cuando se


usa la opcin /parameters, este val or es un el emento
<style> que contiene el valor "serverInterface".
/sharetypes

Activa la ca racterstica de uso comparti do de tipos.


Esta caracter stica permi te crear un a rchivo de cdi go
con una defini cin de t ipo ni ca para ti pos idnticos
que compar ten di stintos servi cios (el espacio de

114

ASP.Net

nombres, el nombre y l a firma de con exin deben ser


idnticos).

Haga r eferencia a

los s ervicios

con

direcciones URL "http://" como parmetros de l nea de


comandos o cree un do

cumento di scomap para l os

archivos l

ndo se u

ocales. Cua

/parameters, este val

or

sa l
es el

a opci

elemento

<sharetypes> y es true o false.


/u[sername]:nombredeusuario

Especifica el nombre de usuari

o qu e se uti liza para

conectarse a un servi dor que requi era autenti cacin.


Cuando se usa la opcin /parameters, este valor es el
elemento <username> y contiene una cadena.
/?

Muestra l a s intaxis de c omandos y opciones par a l a


herramienta.

En este ejemplo en la lnea d e co mandos creamos una clase de pro xy cliente e n


lenguaje Visual Basic de Micr osoft para un servicio web XML ubicado en la direccin
URL especificada. La herramienta guarda la

clase de pro xy cliente en el archivo

myProxyClass.vb.
wsdl /language:VB /out:myProxyClass.vb
http://hostServer/WebserviceRoot/WebServiceName.asmx?WSDL

En este cdigo de ejemplo se mue stra un archivo WSDL /parameters bsico, qu e


slo t iene escritos los elementos requerid os que se pueden usar en combinacin
con un argumento URL en el smbolo del sistema.
<wsdlParameters xmlns="http://microsoft.com/webReference/">
<nologo>true</nologo>
<parsableerrors>true</parsableerrors>
<sharetypes>true</sharetypes>
</wsdlParameters>

Los documentos WSDL se agreg

an al archivo WSDL

/parameters mediante e l

elemento <documents>, como podemos ver en el siguiente ejemplo de cdigo. Se


puede usar cualquier nmero de

elementos <document> dentro del elemento

<documents>.

115

ASP.Net

<wsdlParameters xmlns="http://microsoft.com/webReference/">
<nologo>true</nologo>
<parsableerrors>true</parsableerrors>
<sharetypes>true</sharetypes>
<documents>
<document>http://www.ejemplo.com/service.asmx?WSDL</document>
</documents>
</wsdlParameters>

Este archi vo WSDL

/parameters se muestra el uso de los e

<codeGenerationOptions> y
<webReferenceOptions>. En este
enlace de datos en el

lementos

<style> dentro del elemento


caso, el archivo permite e l nuevo estilo de

cdigo proxy, y es pecifica una extensin de importador de

esquemas, que los resultados no deben se r detallados y que W sdl.exe debe c rear
un servidor proxy de cliente.

<wsdlParameters xmlns="http://microsoft.com/webReference/">
<nologo>true</nologo>
<parsableerrors>true</parsableerrors>
<sharetypes>true</sharetypes>
<documents>
<document>http://www.ejemplo.com/service.asmx?WSDL</document>
</documents>
<webReferenceOptions>
<verbose>false</verbose>
<codeGenerationOptions>properties newAsync enableDataBinding</codeGenerationOptions>
<schemaImporterExtension>
<type>MyNamespace.MyCustomImporterExtension,ExtensionLibrary</type>
</schemaImporterExtensions>
<style>client</style>
</webReferenceOptions>
</wsdlParameters>

6.2 DISCO.EXE
Esta herramienta permite descubrir d irecciones URL de servicios web XML ubicados
en un servi dor web y guardar los document os relac ionados con cad a servicio Web
XML en un disco local.
El archivo .discomap pu blicado en un serv icio web XML es un

documento X ML

que, por lo gen eral, contiene vnculos a ot ros recursos descritos en el servicio web
XML. Los s itios web

que implementan

un servicio web XML no necesitan ser

116

ASP.Net

compatibles con esta herramienta. Los servicios web X ML se pueden crear para uso
privado.
Los archi vos .wsdl , .xs d, .di sco y .di scomap generados por esta h erramienta se
pueden u tilizar como

entrada de la

h erramienta L enguaje de d escripcin de

servicios web (Wsdl.exe) para crear clientes de servicios web XML.


disco [options] URL

Solamente tiene un argumento y es la direccin URL para la que s e descubren y


generan los documento s de descub rimiento publicados (archivos .ws dl, .xsd, .disco
y .discomap).

Las opciones que tiene son:

OPCIN

DESCRIPCIN

/d[omain]:dominio

Especifica el nombre

del dominio que se

utiliza para con ectarse a u n serv idor prox y


que requiera autenticacin.
/nosave

Esta opcin no g
descubiertos ni los

uarda los d

ocumentos

resultados (archivo

.wsdl, .xsd, .di sco y .discomap) en el disco.


El valor predetermina do es que

se guarden

los documentos.
/nologo

Suprime la

presentacin de la

portada de

inicio de Microsoft.
/o[ut]:nombrededirectorio

Especifica el di rectorio de resultados en el


que se guardan los documentos descubiertos.
El valor p redeterminado es e

l director io

actual.
/p[assword]:contrasea

Especifica la contrasea que se

utiliza para

conectarse a un servidor proxy que requiera


autenticacin.

117

/proxy: Direccin URL

ASP.Net

Especifica la direcc in URL del ser vidor proxy


utilizada para las solic itudes HTT P. E l v alor
predeterminado es que se use la
configuracin del sistema proxy.

/proxydomain: dominio

Especifica el

O bien

conectarse a un servidor proxy que requiera

/pd :dominio

autenticacin.

/proxypassword: contrasea

Especifica la contrase a que se usa para

O bien

conectarse a un servidor proxy que requiera

/pp: contrasea

autenticacin.

/proxyusername:

Especifica el nombre de usuari o que se usa

nombredeusuario

para conec tarse a un servidor proxy q

O bien

requiera autenticacin.

dominio que se usa para

ue

/pu: nombredeusuario
/u[sername]:nombredeusuario

Especifica el nombre de usuari o que se usa


para conec tarse a un servidor proxy q

ue

requiera autenticacin.
/?

Muestra la sintaxis de comandos y opciones


de la herramienta.

En este ejemplo ve

mos la lnea de

comando que busca documentos de

descubrimiento en la direccin URL especificada y los guarda en el directorio actual.


La herramienta muestra un mensa je de error si no descubre nuevos recursos en la
direccin URL especificada.
disco http://www.ejemplo.com/ejemploWebservice.disco

El siguiente comando busca

documentos de descubrimiento en la

especificada y los guarda en el directorio de resultados especificado.


disco /out:myDir http://www.ejemplo.com

118

direccin URL

7.

ASP.Net

ESQUEMA DE CONFIGURACIN DE SERVICIOS WEB XML

El esquema de configuracin de servicios web define elementos de archivos de


configuracin que controlan el comportamiento de los servicios web ASP.NET y sus
clientes. El elemento principal es <webServices>.
Por defecto , el eleme nto <webServices> y sus descendientes se aplican a
cualquier serv icio w eb o clase de prox
configuracin se apl

ica seg n el t

y a la qu e se aplica

ipo de

la con figuracin. La

aplicacin, t al como se

indica a

continuacin:

Aplicacin

web

ASP.NET

(servicio

cliente): E

l elemento

<webServices> suele colocarse en un archivo Web.config.

Aplicacin .NET Framework independiente (slo cliente): E l element o


<webServices> suele colocarse

en el archivo de configuracin de la

aplicacin.
El elemento <webServices> y s us descendientes se aplican a los siguientes tipos
de clases:

Una clase de servicio web que se deriva de WebService.

Una

clase

de

proxy de cliente que s

e deri va indi rectamente

de

WebClientProtocol.
Un elemento <webServices> puede aplicarse tanto a un servicio web como a un
cliente en el caso de que una aplicacin web contenga ambas entidades.

119

El esqueleto de un esquema de configuracin sera el siguiente:


<configuration>
<system.web>
<webServices>
<protocols>
<add>
<remove>
<clear>
<serviceDescriptionFormatExtensionTypes>
<add>
<remove>
<clear>
<soapExtensionTypes>
<add>
<remove>
<clear>
<soapExtensionImporterTypes>
<add>
<remove>
<clear>
<soapExtensionReflectorTypes>
<add>
<remove>
<clear>
<wsdlHelpGenerator>

120

ASP.Net

ASP.Net

Los elementos del esquema son:


ELEMENTO

DESCRIPCIN

<add> para <protocols>

Agrega un protocolo especificado que p

uede

utilizar u n serv icio Web ASP .NET para recibi r


datos de solicitudes en

viados por un cl

iente y

devolver datos de respuesta.


<add> para

Agrega una cl ase especi ficada de extensi n de

<serviceDescriptionForm

formato de descripcin de servicio (SDFE) que

atExtensionTypes>

define cmo extender las descripciones

de

servicio ( documentos WSDL) generadas para los


servicios Web.
<add> para

Agrega una clase especifi cada de extensin SOAP

<soapExtensionTypes>

que propo rciona procesamiento extendido de


mensajes SOAP en el servicio Web o en el cliente.

<add> para

Agrega una clase especifi cada de importador de

<soapExtensionImporter

extensin SOAP, que extiende

Types>

generacin de proxy d e cliente para el uso con

el proceso de

una extens in de formato de descripcin

de

servicio (SDFE).
<add> para

Agrega una clase

<soapExtensionReflector

extensin SOAP, que extiende

Types>

generacin de descripcin de servicio (documento

especificada de reflector de
el proceso de

WSDL) para el uso con una extensin de form ato


de descripcin de servicio (SDFE).
<clear>

Quita t odas las ref

erencias a los e

lementos

correspondientes a la etiqueta primaria.


<protocols>

Especifica los protocolos que puede utilizar

un

servicio W eb ASP.N ET para recibir datos

de

solicitudes en viados por u n clien te, y dev olver


datos de re spuesta. Un prot ocolo puede utilizarse
para asociar los datos de la solicitud con un
mtodo y sus parmetros, as como para asociar

121

ASP.Net

los datos de la respuesta con el mtodo y su valor


devuelto.
<remove> para

Quita un

<protocols>

datos de solicitud y res puesta desde el mbito del

protocolo e specificado para controlar

archivo de configuracin.
<remove> para

Quita del mbito del archivo de c onfiguracin una

<serviceDescriptionForm

clase espec ificada de

atExtensionTypes>

descripcin de servicio (SDFE).

<remove> para

Quita una cl ase de ex tensin SOAP especi ficada

<soapExtensionTypes>

del mbito del archivo de configuracin.

<remove> para

Quita del mbito del archivo de c onfiguracin una

<soapExtensionImporter

clase especificada de im

Types>

SOAP.

<remove> para

Quita del mbito del archivo de c onfiguracin una

<soapExtensionReflector

clase especificada de reflector de extensin SOAP.

extensin de formato de

portador de extensin

Types>
<serviceDescriptionForm

Especifica las clases d e extensin de formato de

atExtensionTypes>

descripcin de serv icio ( SDFE) utilizadas para


extender l os document os WSDL generados para
los servic ios Web. Las cl ases SDFE proporcionan
un medio de describir extensiones SOAP.

<soapExtensionImporter

Especifica clases de importador de extensin

Types>

SOAP, que extienden el proceso de generaci n de


proxy de cliente. Para el uso con extensiones de
formato de descripcin de servicio (SDFE).

<soapExtensionReflector

Especifica clases de ref lector de extensi n S OAP,

Types>

que amplan el proces

o de generacin de

descripcin de servicio (doc umento WSDL ). Para


el uso con extensiones de formato de descripcin
de servicio (SDFE).
<soapExtensionTypes>

Especifica las extensione s SOAP que se utilizan


para inspec cionar o modi ficar e l mensaje S OAP

122

ASP.Net

durante el procesamie nto en el se rvicio Web o en


el cli ente. Las extensi ones SOAP aumentan l a
funcionalidad de los servicios web.
<webServices>

Controla la con

figuracin de serv

implementados mediante

ASP .NET,

icios Web
y l a de

clientes de servicios Web que se ejecutan en .NET


Framework.
<wsdlHelpGenerator>

Especifica la pgina de Ayuda d


(un archivo .aspx)

el serv icio Web

que se muestra en el

explorador cuando ste navega directamente a


una pgina ASMX de servicios Web.

123

ASP.Net

EJERCICIOS DE REPASO DE LA UNIDAD DIDCTICA 2: REVISANDO EL


DOCUMENTO
ENUNCIADOS.
1. Alaadiruncontrolpersonalizadoenunwebformtendremosqueregistrarlocon

2. PorquseutilizaelarchivoGlobal.asax?

3. Puedehabermsdeunarchivomachine.configenunsistema

4. Loscontroladoresdelservidorwebseprocesanen

124

ASP.Net

SOLUCIONESALOSEJERCICIOSDEREPASO.UNIDADDIDCTICA2
1. Lafrasecorrectaes:Todoloanterior:A,ByC.
2. La respuesta correcta es: Porque se necesi ta pa ra i mplementar l os eventos a ni vel de
aplicacin y de sesin

3. Larespuestacorrectaes:Verdadero
4. Larespuestacorrectaes:Enelservidor.

125

ASP.Net

TEMA 3. FUNCIONALIDADES CON ASP .NET


LECCIN 1. MANEJO DE FUNCIONALIDADES CON ASP. NET
1.

AGREGAR AJAX A SITIOS WEB

Las caractersticas de AJAX Asynchronous JavaScript And XML (JavaScript


asncrono y XML) en ASP.NET permiten generar ap licaciones web enriquecidas
que tienen muchas ventajas frente a las aplicaciones web basadas c ompletamente
en servidor. Las aplicaciones habilitadas para AJAX ofrecen:

Mayor eficacia, porq ue las partes importantes del proceso de una

pgina

web se realizan en el explorador.

Elementos de interfaz de usuario familiares, co mo indicad ores de


progreso, informacin sobre herramientas y ventanas emergentes.

Actualizaciones parciales de la pgina, que actualizan slo las pa rtes de


la pgina web que han cambiado.

Integracin de clientes con los serv icios de aplicacin de ASP.NET para la


autenticacin de formularios, funciones y perfiles de usuario.

Clases de proxy generadas automticamente q ue simplifican las


llamadas a los mtodos del servicio web desde el script de cliente.

Un marco que permite personalizar los controles de servidor para


incluir funciones de cliente.

Compatibilidad para los exploradores ms popu lares y u tilizados


habitualmente, incluidos Microsoft Internet Explorer, Mozilla Firefox y Ap ple
Safari.

126

ASP.Net

Arquitectura de cliente y servidor de AJAX en ASP.NET

Figura 1.1
Area componentes
Los componentes de cliente habilitan comportamientos enriquecidos en el
explorador sin devoluciones de datos. Los componentes pertenecen a tres
categoras:

Componentes, que so n objetos no visuales que encaps ulan el cdigo,


como un objeto de temporizador.

Comportamientos, que extienden el co

mportamiento bsi co de l os

elementos DOM existentes.

Controles, que representan u

n nuevo

elemento DOM que tiene un

comportamiento personalizado.
El tipo de componente que utilicemos depender del tipo de comportamiento
de cliente q ue queram os. Por ejemplo, una marca de agua para un cuadro

127

ASP.Net

de texto existente se pu ede crear u tilizando un comportamiento asociado al


cuadro de texto.

rea Compatibilidad del explorador


La

capa

de

compatibilidad

para

exploradores pr

oporciona

compatibilidad para script ing de AJ AX para los ex ploradores u tilizados con


ms frecuencia (incluidos Microsoft Internet Explorer, Mozilla Firefox y Apple
Safari). E sto permit e escribir e l mismo s cript in dependientemente del
explorador compatible al que est destinado.

rea Conexin de red


La capa de conexin de red administra la comunicacin entre el script del
explorador y los se rvicios y a plicaciones w eb. T ambin adm inistra las
llamadas asincrnicas a mtodos remotos. En

muchos es cenarios

habituales, como las a ctualizaciones parcial es de la pgi na qu e utilizan el


control UpdatePanel, la capa de conexin de red se ut iliza automticamente
y no es necesario escribir ningn cdigo.
La capa de conexin de red tambin proporcion a compat ibilidad para el
acceso a au tenticacin de f ormularios basad a en serv idor, in formacin de
funciones e in

formacin del p

erfil en

l os script s de cl

iente. E sta

compatibilidad t ambin est dispon ible para las aplicac iones w eb que n o s e
crean u tilizando ASP. NET, siempre qu e la aplicac in t enga el acceso a la
Microsoft AJAX Library.
Core Services
rea Servicios bsicos

128

ASP.Net

Las bibliotecas de scripts de cliente de AJAX en ASP.NET estn


compuestas por

archivos

JavaScript

(.js) que

proporcionan

caractersticas para la programacin orientada a objetos. Estas


caractersticas habilitan un nivel alto de coh erencia y modularidad en
el script ing de cliente. Los siguie ntes servicios bsicos forman parte
de la arquitectura de cliente:

Extensiones orientadas a objetos par a JavaScript, como


clases, espacios de nombres, cont rol de eventos, herencia, tipos
de datos y serializacin de objetos.

Una biblioteca de clases base, que incluye componentes como


generadores de cadenas y control extendido de errores.

Compatibilidad

para

las

bibliotecas

de

JavaScript

incrustadas en un ensambla do o proporcionadas como


JavaScript (.js) independientes. Incrustar

archivos

las bib liotecas de

JavaScript en un ensamblado puede facilitar la implementacin de


aplicaciones y pu ede ay udar a resolv er los pr oblemas de con trol
de versiones.
rea Depuracin y control de errores
Los servicios bsicos incluyen la clase Sys.Debug, que proporciona
mtodos para mostra r objetos en formato leg ible a l final de una
pgina web. La clase tambin muestra

los

mensajes

de

seguimiento de la traza, permit e u tilizar aserciones y permit e


irrumpir en el depurador. La

API del objeto Error extendida

proporciona in formacin til sobre las

excepciones y admit e los

modos de lanzamiento y depuracin.

rea Globalizacin
La arquitectura de serv idor y cliente de AJAX en ASP.NET dispone de
un modelo para localizar y globalizar los scripts de cliente. Esto
permite disear aplicaciones que utilizan una base de cdigo nica
para proporcionar la interfaz de usuario para muchas configuraciones
regionales (idio mas y refere
arquitectura de AJAX
automticamente a

permite al
los

objetos

129

ncias culturales). Por ejemp


cdigo JavaScript
Date

lo, la

dar formato

Number segn la

ASP.Net

configuracin de l a referencia cultural del explorador del usuario, sin


necesidad de una devolucin de datos al servidor.

Area Compatibilidad para scripts


Las caractersticas d

e AJAX en ASP

.NET se implementan mediante la

compatibilidad para los scripts que se envan desde

el s ervidor al c liente. E n

funcin de las caract ersticas qu e habilite mos, se enviarn diferentes scripts

al

explorador. Tambin p odemos cre ar scripts de cliente. En ese caso, podemos


utilizar t ambin est as caract ersticas par a admin istrarlos com o arch ivos .js
estticos (en disco) o como

archivos .js incrustados como r ecursos en un

ensamblado.
Las caracte rsticas de AJAX en A SP.NET incl uyen un m odelo para los modos de
lanzamiento y depuracin. El modo de lanzamiento permite la comprobacin
de errores y el control de excepciones op

timizados para el rendi miento, con un

tamao de script mnimo. El modo de depuracin dispone de caractersticas d e


depuracin ms slidas, como

la co

mprobacin de tipos y argumentos.,

minimizando el tamao del cdigo del lanzamiento.


La compatibilidad con scripts de AJAX en ASP.NET se utiliza para pr oporcionar dos
caractersticas importantes:

Microsoft AJAX Library, que es un si

stema de ti pos y un con junto de

extensiones JavaScript que propo rcionan espaci os de nombres, he rencia,


interfaces, enumeraciones, reflexin y caractersticas adicionales.

Representacin parcial de la pgina, que actualiza regiones de la pgina


utilizando una devolucin de datos asincrnica..

La arquitec tura de A JAX en AS P.NET se ge nera sobre la base d

el modelo de

localizacin de ASP .NET 2. 0. qu e proporci ona compat ibilidad adi cional par a los
archivos . js loca lizados qu e se incrustan en
disco.

130

un ensambl ado o se p roporciona en

ASP.Net

Area Servicios Web


una pgina web ASP.NET , podemos utilizar el

Con l a func ionalidad de AJAX en

script de cliente para llamar a servicios web ASP.NET (.asmx) y a servicios


de Windows Communication Foundation (WCF) (.svc). Las referencias d el
script nece sarias se agregan automticame nte a la p gina y, a s u vez, ge neran
automticamente las clases de p roxy de ser vicio w eb q ue u tilice e n el scr ipt de
cliente para llamar al servicio web.
Area Servicios de aplicacin
Los servicios de aplicacin son servicios web integrados basados en la
autenticacin de formularios, f unciones y perfiles de usuario de ASP.N

ET. Estos

servicios se pueden llamar med iante un scr ipt en una pgi na we b habilitada para
AJAX, una aplicacin cliente de Windows o un cliente compatible con WCF.
Area Controles de servidor
Los controles de servidor de AJAX es tn compuestos por cdigo de servidor y
de cliente q ue se integ ra para gen erar un comportamiento de cliente enriquecido.
Cuando se agrega un control

AJAX a una pgina web ASP.N ET, la pgina enva

automticamente el script de cliente de sopor te al explorador para la funcionalidad


de AJAX. Podemos proporcionar

cdigo de cliente adicion al para personalizar l a

funcionalidad de un control, pero no es necesario.


Los controles de servidor de AJAX en ASP.NET utilizados con ms frecuencia son:

ScriptManager: Administra los recursos del s cript para los compone ntes de
cliente, represen tacin parcia l de la pg ina, loca lizacin, globaliz acin y
scripts de usuario personalizados. El control ScriptManager es necesario para
poder utilizar los controles UpdatePanel, UpdateProgress y Timer.

UpdatePanel: P ermite act ualizar l as part es selecc ionadas de la pgi na, en


lugar de actualizar la pgina entera

u tilizando u na dev olucin de dat os

sincrnica.

UpdateProgress: Proporciona informacin del es tado de las actualizaciones


parciales de la pgina en controles UpdatePanel.

131

ASP.Net

Timer: Realiza devoluciones de dat os en intervalos definidos. Puede utilizar


el con trol T imer para exponer la pgina en tera, o u tilizarlo con e l con trol
UpdatePanel para realizar actualizaciones parciales de la pgina a intervalos
definidos.

Crear un sitio Web habilitado para AJAX


1. En el men Archivo, hacemos clic en NuevoSitio Web y aparece el
cuadro de dilogo siguiente

Figura 1.2
2. En Plantillas instaladas de Visual Studio, hacemos clic en Sitio Web de
ASP.NET.
3. En el cuadr o Ubicacin, escriba el nombre de la carpe ta en la que desea
conservar las pginas de su sitio Web.
Por ejemplo, escribimos el nombre de carpeta C:\sitioweb

132

ASP.Net

4. En la list a Lenguaje, hacemos clic en el lenguaje de programacin con el


que queramos trabajar, en nuestro caso Visual Basic5. Hacemos clic en Aceptar.

Se crea la carpeta y una pgina nueva denominada Default.aspx.


1. En el Explorador de soluciones, hacemo s clic con el botn secundario en el
nombre del sitio y hacemos clic en Agregar nuevo elemento.
Se abrir el cuadro de dilogo Agregar nuevo elemento.

Figura 1.3
2. En Plantillas instaladas de Visual Studio, seleccione Web Forms.
3. Asignaremos a la nueva pgina el nombre ejemplo.aspx y desactivamos la
casilla Colocar el cdigo en un archivo independiente.
4. Seleccionamos el idioma que queramos usar y hacemos clic en Agregar.
5. Cambiamos a la vista Diseo.

133

ASP.Net

6. En la ficha Extensiones AJAX del cuadro de herrami entas, hacemos doble


clic en el control ScriptManager para agregarlo a la pgina.

Figura 1.4
7. Arrastre un control UpdatePanel desde el

cuadro de herramientas y lo

colocamos bajo el control ScriptManager.


El control UpdatePanel realiza las actualizaciones parciales de la pgina e identifica
contenido qu e se act ualiza independientemente del resto de la pgin a. A partir de
aqu se aadir a el c digo necesario como cualquier otro control para realiza r la
operativa que qeurramos en nuestra pgina
2. OBTENCIN DE ACCESO A DATOS
Las aplicaciones Web o btienen acceso normalmente a los orgenes de datos para el
almacenamiento y la recupera cin de datos dinmicos. Se puede escribir cd

igo

para el acceso a los dat os utilizando clases del espacio de nombres System.Data
(normalmente denominado ADO .NET) y del espacio de

nombres System.Xml.

Este enfoque era normal en versiones anteriores de ASP.NET.


Pero ASP.NET tambin permite

realizar el enlace de dat os mediante declarac in.

Este proceso n o requiere la existencia de cdigo para los escenarios de datos ms


comunes, entre los que se incluyen:

Seleccionar y mostrar datos.

Ordenar, paginar y almacenar datos en memoria cach.

134

ASP.Net

Actualizar, insertar y eliminar datos.

Filtrar datos utilizando parmetros en tiempo de ejecucin.

Crear escenarios de detalles maestros utilizando parmetros.

Incluye dos tipos de controles de servidor que participan en el modelo de enlace


de datos declarativo: controles de origen de datos y controles enlazados a
datos. Estos controles administran las tareas subyacentes requeridas por el modelo
Web sin es tado para mostrar y actualiz ar d atos en pginas Web

ASP.NET. Por

tanto, no es estri ctamente necesari o cono cer los detalles del c iclo de vida d e la
solicitud de pgina si slo se va a realizar el enlace de datos.
2.1

CONTROLES DE ORIGEN DE DATOS

Los controles de origen de datos so n co ntroles ASP.NET q ue administran las


tareas de conexi n a un ori gen d e datos y d e lectura y escritura de datos.

Estos

controles no represen tan ni nguna i nterfaz de usuari o, si no que actan co

mo

intermediarios entre un almacn de datos en part icular (como una base de datos,
un objeto comercia l o un archivo XML) y lo s dems controles de

la pgina W eb

ASP.NET. Contienen u n conj unto de fu nciones para recuperar y m odificar datos,


entre las q ue se in cluyen la con sulta, la ord enacin, la pagin acin, el f iltrado, la
actualizacin, la eliminacin y la insercin.
Los controles de origen de datos tamb

in se pu

eden ampliar para admit

ir

proveedores de almacenamiento y acceso a datos adicionales. ASP.NET incluye los


controles de origen de datos siguientes:
CONTROL DE
ORIGEN DE DATOS
AccessDataSource

DESCRIPCIN
Permite trabajar con una base de datos de Microsoft
Access.

LinqDataSource

Permite usar

Language-Integrated Query (LINQ)

en una p gina web ASP.N ET a travs de marcado


declarativo para recuperar

y modificar dat os de un

objeto de datos. Admi te la generaci n automti ca de


comandos de selecci n, act ualizacin, in sercin y
eliminacin. E l con trol t ambin admit e ord enacin,

135

ASP.Net

filtrado y paginacin.
ObjectDataSource

Permite trabajar con un objeto comercia l u otra clase y


crear aplicaciones Web basadas en objetos de nivel
medio para administrar los datos.

SiteMapDataSource

Se utiliza con la navegacin en el sitio ASP.NET.

SqlDataSource

Permite trabajar con prove

edores de datos

administrados de ADO.NET, que proporcionan acceso a


bases de d atos de Microsoft SQL Server, OLE DB,
ODBC u Oracle.

XmlDataSource

Permite tr abajar con un archi

vo XML,

que es

especialmente til para cont roles de servidor ASP.NET


jerrquicos tales como el control TreeView o Menu.

2.2

CONTROLES ENLAZADOS A DATOS

Los controles enlazados a datos representan datos como marcad o al explorador


que realiz la solicitud. Un control enlazado a dat os se pu ede enlazar a u n control
de origen de datos y b uscar datos automticamente en e l momento apropiado de l
ciclo de v ida de la s olicitud de pgina. Estos contro les pueden aprovechar las
ventajas de las funciones proporcionadas por un control de origen de datos entre
las que se incluyen la ordenacin, la pag inacin, el alma cenamiento en cach, el
filtrado, la actualizacin, la e liminacin y la insercin. Establecen una conexi n con
un control de origen de datos a travs de su propiedad DataSourceID.
ASP.NET incluye los controles enlazados

a datos que

se describen en la ta

bla

siguiente.

CONTROL
ENLAZADOS A
DATOS

DESCRIPCIN

Controles de lista

Representa los datos en una


Entre los con

troles de

136

variedad de formato de listas.

lista se

incluyen los c

ontroles

BulletedList, CheckB

ASP.Net
oxList, DropDownLi

st, Li

stBox y

RadioButtonList.
AdRotator

Representa los anuncios de una pgina como una imagen en la


que los usuarios pueden hacer cl ic para i r a una di reccin URL
asociada al anuncio.

DataList

Representa los datos en una

tabla. C ada elem ento se

representa u tilizando u na plan tilla de ele mento def inida p or el


usuario.
DetailsView

Muestra un registro cada vez en disposicin de tabla y permit e


editar, eliminar e in sertar registros. Tambin se pu ede realizar
la paginacin a travs de varios registros.

FormView

Es si milar al control

DetailsView, pero permi te def inir una

disposicin de formato libre pa

ra cada regist ro. El contro l

FormView es como un control DataList para un registro nico.


GridView

Muestra los dat os en u na t abla e in cluye compat ibilidad para


editar, actualizar, eliminar,

ordenar y paginar datos sin

necesidad de cdigo.
ListView

Permite definir el diseo de lo


operaciones de ordenacin

s datos con

plantillas. Admit e

au tomtica, edi cin, in sercin y

eliminacin. T ambin pu ede h abilitar la pagin acin medi ante


un control DataPager asociado.
Menu

Representa los datos

en un

men dinmico jerrqu ico que

puede incluir submens.


Repeater

Representa los datos en una lista. C

ada elem ento se

representa u tilizando u na plan tilla de ele mento def inida p or el


usuario.
TreeView

Representa los datos en un rbol jerrquico


pueden expandir.

137

de nodos q ue se


2.3

ASP.Net

LINQ

Language-Integrated Query (LINQ) proporciona un modelo d e programacin


unificado para realizar consultas y actualizar datos de tipos diferentes de orge nes
de datos y extiende directamente las f

unciones de datos en l os lenguajes C # y

Visual Basic. LINQ aplica los prin cipios de la programacin orientada a objetos
a los datos relacionales. Para trabajar co n LINQ, po demos uti lizar el control
LinqDataSource o crear directamente consultas LINQ para tener acceso a datos
desde una pgina web.
Si utilizamos LINQ en una aplicacin web, es posible que tengamos que cambiar los
archivos de directivas para la seguridad de acceso del cdigo.
Control LinqDataSource
El control LinqDataSource proporciona una manera fci l de conectar a l os datos
de una base de datos o a una rec oleccin de datos e n memoria como una matriz.
Podemos escribir med iante declaracin to das las condiciones neces arias para los
escenarios tpicos como la
datos. El control

recuperacin, f iltrado, clasif icacin y agru pacin de

crea dinmicamente las consultas LINQ a partir de los

valores proporcionados mediante declaracin.


Al recupera r datos de una

clase de contexto de dato

s LINQ to

SQL, tambi n

podemos configurar este control para administrar las operaciones de actualizacin,


insercin y el iminacin. E l con trol real iza est as t areas sin requ erir qu e se escriban
comandos SQL para ello.
Para mostrar los datos en una p gina web, enl azaremos un control enlazado a
datos al control LinqDataSource, los

controles GridView y

DetailsView son

ejemplos de controles enlazados a datos.


En este ejemplo vemo s el m arcado de un control LinqDataSource que conecta con
la base de datos Ejmeplo. Devuelve

los registros de

propiedad correo tiene un valor igual a 1.


<asp:LinqDataSource
ContextTypeName="EjemploContext"
TableName="Contactos"
Where="Correo=1"
ID="LinqDataSource1"
runat="server">
</asp:LinqDataSource>

138

la tabla Contactos c

uya

ASP.Net

Control ObjectDataSource
El control ObjectDataSource se u tiliza cu ando qu eremos interactuar con los
datos de

una ma

nera ms compleja

que la que

permite el c

ontrol

LinqDataSource. Por ejemp lo, puede crear un mtodo de actualizacin

que

permita establecer valores en tablas combinadas.


Este con trol se pu

ede u tilizar con un a clase LINQ to SQL. Para

ello,

estableceremos la propiedad TypeName en el nombre de la clas e de contexto de


datos. Tambin establecermos

los mtodos

SelectMethod, UpdateMethod,

InsertMethod y DeleteMethod en los mtodos de la clase de contexto de datos


que realizan las operaciones correspondientes.
Si utilizamos la ejecucin diferida de cons ultas con el control ObjectDataSource,
debemos crear un controlador de

eventos par a el evento ObjectDisposing pa ra

cancelar la eliminacin de la clas e de co ntexto de dato s. Este pas o es necesario


porque LINQ to SQL admite la

ejecuci n diferida, mientras

que el control

ObjectDataSource intent a elim inar el con texto de dat os despu s de la operac in


Select.
En est e eje mplo v emos como cont rol Gr idView pu ede most rar dat os u tilizando u n
objeto ObjectDataSource en una pgina web ASP.NET.
<%@ Register TagPrefix="aspEjemplo" Namespace="Ejemplo.AspNet.VB"
Assembly="Ejemplo.AspNet.VB" %>
<%@ Page language="vb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head>
<title>ObjectDataSource - Ejemplo</title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:gridview
id="GridView1"
runat="server"
datasourceid="ObjectDataSource1" />
<asp:objectdatasource
id="ObjectDataSource1"

139

ASP.Net

runat="server"
selectmethod="GetEmpleados"
typename="Ejemplo.AspNet.VB.EmployeeLogic" />
</form>
</body>
</html>

Consultas LINQ
Podemos incluir consultas LINQ en un a pgin a w eb sin u tilizar un control de
origen de datos. Normalmente est as consultas se utilizan si nece sitamos utilizar un
operador de consulta que no est disponible en el control LinqDataSource. Tambin
podemos utilizarlo si

queremos mostra r datos de slo lectura

en un co ntrol

enlazado a datos sin el procesamiento necesario para crear un control de origen de


datos.
En este ejemplo siguie nte vemos cmo incl uir una co nsulta LI NQ en una pgina
web mostrando los resultados de la consulta en un control GridView.

Protected Sub Page_Load(ByVal sender As Object, _


ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim dataContext As AdventureWorksDataContext = _
New AdventureWorksDataContext()
Dim query = From contact In dataContext.Contacts _
Where contact.EmailPromotion = 1 _
Select contact
GridView1.DataSource = query
GridView1.DataBind()
End If
End Sub

2.4.

DATOS DINMICOS

Los datos dinmicos de ASP .NET son un marco que permite crear rpida

mente

aplicaciones web ASP.N ET controladas por datos. Los datos dinmicos detecta n
automticamente el modelo de

datos en

tiempo de ejecucin y determinan el

comportamiento de l a interfaz de usuario segn el modelo de datos. U n marco

140

ASP.Net

con la tcnica scaffolding pro porciona al instante un

si tio web funci onal para

mostrar y modificar datos.


Scaffolding es un mecanismo que mejora el marco de pginas ASP.NET existente
mostrando dinmicamente pgina s basadas en el modelo de datos. Ofrece

las

siguientes funciones:

Poco o nada de cdigo para crear una aplicacin web controlada por datos.

Un tiempo de desarrollo rpido.

Una validacin de datos integrada basada en el esquema de base de datos.

La seleccin automtic a de datos crea da para cada clave externa o

campo

booleano
Dicha tcnica podr per sonalizarse posteriormente mediante el uso de metadatos y
plantillas

o la crea

cin de pginas ASP.N

ET es tndar par a invalidar el

comportamiento predeterminado. Las aplic aciones web ASP.NE T existentes pueden


integrar con facilidad elementos de la lgica de scaffolding en las pginas web.
Los datos dinmicos permiten personalizar y ampliar la in terfaz de usuario que se
representa para mostrar y modificar camp

os de datos. Se pueden aplicar

las

siguientes posibles personalizaciones:

Agregar metadatos personalizados a los campos de datos. Podemos


utilizar at ributos para asign ar met adatos a campos de dat

os a f in de

personalizar cmo se represen ta la interfaz de usuario de ese campo de


datos para most
atributo

rarlo y modif

UIHintAttribute

icarlo. P or ejemp lo, podemos u


para asociar

na plan

tilla de

tilizar e l
campo

personalizada a un campo de datos.

Agregar informacin de tipo no intrnseca a los tipos de campo de


datos. Podemos utilizar atributos para asign ar un tipo a un campo de dat os
que no proceda direct amente del origen de

datos. Por ejemp lo, p odemos

utilizar e l atributo DataTypeAttribute para asociar u n t ipo ad icional, n o


intrnseco, a un campo de datos.
Los datos d inmicos admiten los modelos de datos de LINQ to SQL y Entity
Framework que se i ncluyen en NET Frame work. E stos model os conti enen tipos
CLR q ue los datos dinmicos utilizan para

consultar la base de da tos y realizar

operaciones de creacin, lectura, actualizacin y eliminacin (CRUD).

141

ASP.Net

Al crear un nuevo proyecto en Visual Studio 2008, podemos seleccionar la plantil la


Clases de LINQ to SQL o Entity Data Model de ADO.NET. Esta seleccin
determina el tipo de modelo que utilizar el proyecto, es decir, el modelo de LIN Qto-SQL o Enti

ty Fra mework. La

funcin scaffolding de datos dinmicos

nicamente puede ad mitir uno de l os ti pos de modelo de datos en el mismo


proyecto.
En tiempo de ejecuci n, los datos dinmi cos extraen automticamente informacin
sobre el modelo de dat os, por ejemplo las propiedades de campo de datos. A p artir
de esta informacin, deduce c

mo crear la interfaz de usuario para mostrar y

modificar datos. Para representar la interfaz de usuario, utiliza plantillas de campo.


Por ejemplo, los datos dinmicos utilizan la siguiente informacin para representar
la interfaz de usuario:

Informacin sobre las asociaciones entre las tablas para

mostrar

columnas de clave externa y navegar entre las tablas.

Informacin del tipo de datos para agregar la validacin a un campo


de datos. Por ejemplo, la in formacin de colu mna n ula se pu ede u tilizar
para det erminar si se requ iere u n campo de dat os, y la in formacin de
longitud se puede utilizar para restringir la longitud mxima de la entrada de
texto del usuario.

142

ASP.Net

LECCIN 2. OPTIMIZACION DE APLICACIONES ASP.NET


1. APLICAR SEGURIDAD EN APLICACIONES ASP.NET
ASP.NET junto co n Microsoft Internet Information Services (IIS), pued e
autenticar las credenciales del usuario

como nombres y contrasea s mediante los

mtodos de autenticacin siguientes:

Windows: bsica, implcita, y Autenticacin de Windows integrada


(NTLM o Kerberos).

Autenticacin mediante formularios, co n la que crea una p

gina de

inicio de sesin y se administra la autenticacin en la aplicacin.

Autenticacin mediante certificados de cliente

ASP.NET controla el acceso a la in

formacin de los sitios comparando las

credenciales autenticadas, o representacion es de las mismas, con l os permisos del


sistema de archivos de Microsoft Windows NT o con un archivo XML que contiene la
lista de usuari os autori zados, fu nciones autorizadas (grupos) o verbos HTTP
autorizados.
Relaciones entre los sistemas de seguridad de ASP.NET.

Figura 1.1
En esta imagen todos los

clientes Web se comunican con las aplicaciones

ASP.NET a travs de Microsoft Internet Information Services (IIS). IIS


autentica la solicitud si fuera necesario y, a continuacin, busca el recurso solicitado
(como u na aplicac in ASP .NET). Si el c liente est autorizado, el
disponible.

143

recurso estar


Cuando se est

ASP.Net

ejecu tando un a aplicacin

ASP. NET, podemos u

tilizar la s

caractersticas de seguridad de AS P.NET integradasy tambin las caractersticas de


seguridad de .NET Framework.
La configuracin de seguridad de ASP.NET se configura en los

archivos

Machine.config y Web.config.

En e l archivo Machine.config se gu arda la con

figuracin base y

predeterminada se establecen, este archivo se ubica en el

la

subdirectorio

Config de la instalacin .NET Framework actual.

En el archivo Web.config se puede establecer una configuracin especfica


del sitio y otra especfica de la aplicacin (incluidos los valores de reemplazo
del arch ivo M achine.config). Este archivo estar en los directorios raz del
sitio Web y de la aplica cin. Los s ubdirectorios he redan l as confi guraciones
del directorio, a no ser que se reem

placen por un arc hivo Web.config del

subdirectorio.
archivo Web.config: l as secciones

Hay tres subsecciones principales en un


autenticacin, autorizacin e identidad.
Los valores para cada elemento de segu

ridad normalm ente se establecen en e l

archivo Machine.config y se r eemplazan segn se a necesario en el archivo


Web.config en la aplicacin . T odos los su bdirectorios h eredan aut omticamente
estos valores, aunque los subdirectorios

pueden tener sus propios archivos de

configuracin que reemplazan valores heredados.


El ejemp lo siguiente muestra la sintaxis

de las secciones de seguridad de un

archivo de configuracin:
<authentication mode="[Windows|Forms| None]">
<forms name="name"
loginUrl="url"
protection="[All|None|Encryption|Validation]"
path="path" timeout="minutes"
requireSSL="[true|false]"

144

slidingExpiration="[true|false]">
<credentials passwordFormat="[Clear|MD5|SHA1]">
<user name="********"
password="********"/>
</credentials>
</forms>
</authentication>

<authorization>
<allow users="comma-separated list of users"
roles="comma-separated list of roles" />
<deny users="comma-separated list of users"
roles="comma-separated list of roles" />
</authorization>
<identity impersonate ="[true|false]"
userName="domain\username"
password="password" />

<trust level="[Full|High|Medium|Low|Minimal]"
originUrl=""/>

<securityPolicy>
<trustLevel name="Full" policyFile="internal"/>
<trustLevel name="High" policyFile="web_hightrust.config"/>

145

ASP.Net

ASP.Net

<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>


<trustLevel name="Low" policyFile="web_lowtrust.config"/>
<trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
</securityPolicy>

Los valores predeterminados de estos elementos se incluyen en la tabla siguiente.

Valor predeterminado

Descripcin

<allow roles="" />

Una cadena vaca que indica q

ue se permiten

todas las funciones de forma predeterminada.

<allow users="*" />

Una cadena vaca que indica

que todos los

usuarios ti enen acceso (no se requi

ere ni nguna

autenticacin).

<authentication

El t ipo de autenticacin qu e det ermina el or igen

mode="Windows" />

del va lor U ser actual. El valor pre determinado es


Windows.

<credentials

El algor itmo h ash qu e se u

tiliza e n las

passwordFormat="SHA1" />

contraseas. El valor predeterminado es SHA1.

<deny roles="" />

Una cadena vaca que indica que no se de niega


ninguna funcin de forma predeterminada.

<deny users="" />

Una cadena vaca que indica que no se de niega

146

ASP.Net

ningn usuario de forma predeterminada.

<forms

Direccin URL a la que se

dirige la so licitud si

loginUrl="logon.aspx" />

establece la autenticacin mode como Forms y si


la so licitud n o t iene u n v ale de au tenticacin
vlido.

<forms name=".ASPXAUTH"

El n ombre bajo el qu e la cook ie de au tenticacin

/>

de formularios se almace

na en el equipo

del

usuario.

<forms path="/" />

La ruta

de acceso a la que se aplica la

autenticacin de f

ormularios. E

lv

predeterminado es todas las rutas de a

alor
cceso

desde la raz de la aplicacin hacia abajo.

<forms protection="All" />

La seguridad que se

ha aplicado al vale de

autenticacin de f ormularios. Los valores incluyen


All, None, Encryption y Validation.

<forms timeout="30" />

El tiempo d e espera e n minutos antes de que el


vale de au tenticacin de f ormularios ex pire y los
usuarios tengan que volver a autenticarse.

<forms requireSSL="false"

Un valor booleano que indi ca si se requiere una

/>

conexin SSL

para t

ransmitir la cook

ie de

autenticacin.

<forms

Un v alor boolean o qu e in dica si es t h abilitado el

147

ASP.Net

slidingExpiration="true" />

plazo de expiracin.

<identity

Un valor booleano que indica s

impersonate="false" />

est habilitada.

<identity userName="" />

Una cadena vaca que indica que no se especif ica


ninguna i

dentidad

de us

i la suplantacin

uario de fo

rma

predeterminada.

<identity password="" />

Una cadena vaca que indica que no se especif ica


ninguna co ntrasea p ara l a identidad de usuari o
de forma predeterminada.

<trust level="Full"

La directiv a de seguridad que s

e aplicar

a la

originUrl="" />

aplicacin.

<trustLevel name="Full"

El archivo de directivas predeterminado para el

policyFile="internal"/>

nivel de confianza Full.

<trustLevel name="High"

El archivo de directivas predeterminado para el

policyFile="web_hightrust.co

nivel de confianza High.

nfig"/>

<trustLevel name="Medium"

El archivo de directivas predeterminado para el

policyFile="web_mediumtrus

nivel de confianza Medium.

t.config"/>

<trustLevel name="Low"

El archivo de directivas predeterminado para el

148

ASP.Net

policyFile="web_lowtrust.con nivel de confianza Low.


fig"/>

<trustLevel name="Minimal"

El archivo de directivas predeterminado para el

policyFile="web_minimaltrus

nivel de confianza Minimal.

t.config"/>

1.1. SUPLANTACIN
El escenario de suplantacin se basa en

la au tenticacin de Serv icios de

Microsoft Internet Informatio n Server (IIS) y en la seguridad de acc eso a archivos


de Microsoft Windows para minimizar la prog ramacin de la segu ridad en la propia
aplicacin ASP.NET.

Figura 1.2
1. Una solicitud de un cliente de red llega a IIS.

149

ASP.Net

2. IIS au tentica al cl iente u tilizando l a segu ridad bsica, im plcita o integrada


de Windows (NTLM o Kerberos).
3. Si se autentica al cliente, IIS pasa la solicitud autenticada a ASP.NET.
4. La aplicacin ASP.NET suplanta al cliente que realiza la solicitud utilizando el
smbolo (token) de acc eso pasado desd e IIS, y se basa en los permisos d e
archivo NTF S para conceder acceso a los rec

ursos. La a plicacin ASP.N ET

slo necesit a comprobar que la su plantacin est establecida en true en el


archivo de con figuracin de ASP .NET; no s e requi ere ni ngn c digo de
seguridad de ASP.NET.
Si la suplantacin no est habilitada, la aplicacin se ejecuta con la identidad
de proceso de ASP.NET. En

Microsoft Windows 2000 Ser ver y Wind ows XP

Professional, la identidad predetermina da es una cuenta l ocal denomi nada


ASPNET que se crea

automticamente al instalar ASP.NET. En

Windows S erver 2003, la identidad pr

Microsoft

edeterminada es la del grupo de

aplicaciones correspondiente a la aplicacin IIS (de manera predeterminada,


la cuenta Servicio de red).
5. Si se concede el acces o, la aplicacin ASP.NET devuelve el recurso solicitado
a travs de IIS.

1.2.

AUTENTICACIN DE FORMULARIOS

En el escenario de autenticacin de formularios, una apl icacin obti ene las


credenciales, como el nombre

y la co

ntrasea, di rectamente del usuari o y

determina por s misma su autenticidad.


La aplicacin

NO u tiliza l a au tenticacin de IIS,

per o la con figuracin de

la

autenticacin de IIS puede afectar a la au tenticacin de formul arios. Como norm a,


cuando se utiliza la au tenticacin de f ormularios, se h abilita e l acces o an nimo en
IIS. Por otr a parte, si l os usuari os no pasan l a autenti cacin de IIS, no p ueden
ponerse en contacto c on l a apli cacin pa ra proporci onar un nombre de usuari o y
una contrasea para la autenticacin de formularios.

150

ASP.Net

Figura 1.3
1. Un usuario genera una solicitud de un recurso protegido.
2. IIS recibe la solicitud y, dado que el acceso annimo de IIS est habilitado,
IIS no realiza ni nguna autenti cacin del usuario y la solicitud se pasa a

la

aplicacin ASP.NET.
3. Dado que

el modo de autenticacin

de AS P.NET se

ha establecido en

formularios, la apl icacin ASP.NET examina la solicitud para obt ener un vale
de autenticacin de formularios (una cookie concreta). Si no hay ningn vale
de au tenticacin asoci ado a la solic itud, ASP. NET rediri ge la sol icitud a la
pgina de inicio de sesin especificada en el arch ivo de configuracin de la
aplicacin.
4. En la pgina de inic

io de sesin,

el usua rio escri be las credenciales

requeridas, normal mente u n no mbre y una contras ea. El cdi go de


aplicacin comprueba las creden ciales para c onfirmar su autenticidad. Si se
autentican las credenciales, el cd igo de aplicacin asocia a la respuesta un

151

ASP.Net

vale de au tenticacin qu e represen ta las credenciales del usuario. (No se


incluye la con trasea.) Si se produ

ce un

error en la au tenticacin, la

respuesta se devuel ve con un mensaje de ac ceso denegado o se vuelve

mostrar el formulario de inicio de sesin.


El vale de au tenticacin emitido se in cluir en las solicitudes que se real icen
a la aplicac in ASP .NET con post erioridad. ASP .NET ex amina la v alidez del
vale medi ante u na Comprobacin de la Autenticacin de Mensajes
(MAC).
5. Si se autentica al usua

rio, ASP.NET compr ueba la autorizacin y puede

conceder acceso al recurso solicitado

inicialmente, redirigi r la so licitud a

alguna otra pgina o redi rigirla a un mdulo de auto rizacin personalizado,


donde se comprueba si las credenciales estn autorizadas a tener acceso al
recurso protegido. Si s e produce un e rror de autorizacin, ASP.NET redirige
al usuario a la pgina de inicio de sesin.
Si se autoriza al usuario, se concede el ac ceso al rec urso protegido l a
aplicacin puede requerir una prueba adicional de las credenciales antes de
autorizar el acceso al recurso proteg

ido, dependiendo del diseo de la

aplicacin.

2. MEJORA DEL RENDIMIENTO DE APLICACIONES DE ASP .NET


El modo en que se compila y se configura una aplicaci n afecta a su rendimiento.
Ahora veremos algunas

sugerencias para que el conjunto de ap licaciones Web

funcione eficazmente:

Si la aplicacin Web es grande, hay que realizar una precompilacin.

Reciclar los procesos cuando ejecutemos aplicac iones Web ASP.NE T en


Internet Information Services 5.0.

Si es necesario, ajustaremos el nmero de subprocesos de cada proceso


de trabajo de la aplicacin. Para las aplicaciones que confen en gran medida
en los recu rsos ex ternos, con sideraremos l a posibi lidad de h abilitar u na
matriz de procesos Web en los equipos con varios procesadores.

Deshabilitar el modo de depuracin.

152

ASP.Net

Ajustar los archivos de configuracin del servidor Web y de


aplicaciones con cretas para qu

e se

ajusten a nuestras necesidades,

mediante las tcnicas siguientes:


a. Habilitando la au tenticacin s lo para

las apl icaciones qu e l a

necesiten.
b. Configurando la ap licacin de f

orma qu e utilice los valores d e

codificacin de solicitudes y respuestas adecuados.


c. Quitar los mdulos no usados de la can alizacin de procesamiento de
solicitudes.
Otra opci n para mejorar

el r endimiento de la

aplicac in, es con figurar el

almacenamiento en cach en los niveles siguientes:

Aplicacin: En el archivo Web.config de una aplicacin, podemos u tilizar


el elemento OutputCacheSection para controlar el almacenamiento en
cach de la aplicac in complet a. C on est e elem ento podemos con figurar
perfiles de cach que se puedan aplicar a pginas individuales.

Equipo: Podemos configurar las

mismas opciones

en el

archivo

Machine.config que en el archivo Web.config.

Pgina: El almacenamiento en cach se puede configurar en pginas


individuales aplican do los perfiles de cach definidos en un archivo de
configuracin.

Tambin podemo s configurar propied

individuales en la

ades de

cach

directiva @ OutputCache o mediante atributos en la

definicin de clase de la pgina.

Control: El almacenamiento en

cach de un co ntrol de usuari o s e puede

configurar establ eciendo la directiva @ OutputCache en el archivo del


control de usuari o o establ eciendo el atributo PartialCachingAttribute en
la definicin de clase del control.

153

3.

ASP.Net

DEPURACIN EN ASP.NET

El cdigo de aplicacin puede contener distintos tipo s de errores. La mayora d e


los errores de sintaxis se detectan dura nte la compilac in. Sin embargo, hay tipos
de errores que requieren que se depure el cdigo, es decir, que se examin e el
cdigo mie ntras se ejecuta para validar que la ruta de acceso de ejecucin y los
datos son los correctos.
El Kit de desarrollo de software de Windows (SDK) incluye una herrami enta
denominada Visual Debugger que permite examinar

una aplicacin mientra s se

est ejecutando. Esta herramien ta se en cuentra en %ProgramFiles%\Microsoft


Visual Studio 8\SDK\v2.0\GuiDebug\DbgCLR.exe
Con el depurador podemos ver exactamente cmo funciona la ap
recorriendo cada instruccin a medida que

licacin

se ejecuta y viendo los datos de c ada

variable. P ara u tilizar Visual D ebugger, lo abriremos y

lo asoci aremos al pro ceso

que est ejecutando las pginas de nuestra aplicacin ASP.NET.


En las versiones 5.0 y 5.1 de Internet In

formation Ser vices (IIS), y en IIS

6.0

cuando se ejecuta en el modo de aplicacin de IIS 5.0, el proceso a l que se asocia


el depurador es el proceso de trabajo de ASP.NET (Aspnet_wp.exe).
En IIS 6.0 cuando se ejecuta en modo de aislamiento de proceso de trabajo, el
proceso al que se aso cia es el

proceso de grupo de subprocesos

Cuando el depurador est asociado a un


durante ese proceso

(W3wp.exe).

proceso, pue de ver tod o lo que ocurre

y el depurador vuel

ve a asignar al cd

igo orig inal las

instrucciones que se ej ecutan en el proceso, d e forma que pueda ver cada lnea de
cdigo que se ejecuta.
Visual Debugger
Visual Debugger nos

permite ex aminar el cdigo mientras se est ejecutando e

incluye caractersticas que nos ayudan a depurar aplicaciones como son:

Puntos de interrupcin:

Son lugares del cdigo en los que el d epurador

detendr la aplicac in, lo qu e le pe rmite ver el estado de dat os actual de la


aplicacin y, despus, recorrer pas o a paso cada lnea de cdigo. Un punto

154

ASP.Net

de interrupcin es una seal que indica al depurador que debe suspender


temporalmente la ejecucin del programa en un punto determinado. Cuando
la ejecucin se suspende en un punt
programa s e encuentra en

o de interrupci n, se dice

que el

modo de interrupcin. El paso al modo de

interrupcin NO significa el fin de la ej ecucin del programa. La ejecucin


puede reanudarse en cualquier mo mento, as que ms bien es un tiempo de
espera. Todos los e lementos, por ejemplo, pe rmanecen en la memor ia (la s
funciones, vari ables y objetos), pe

ro se su spenden sus movimientos y

actividades. Duran te este ti empo podemos examinar sus posic


estados pa ra buscar

iones y

infracciones o e rrores y realizar ajustes en el

programa. Por ejemp lo, podemos cambiar

el valor de

una variable. Otra

accis que podemos realizar es mover el punto de ejecucin, con lo cual se


modifica la instruccin que se ejecuta r a continuacin cuando prosiga

la

ejecucin. E n C++, C# y Visual Basic, podemos in cluso cambiar el cdigo


gracias a

una funcin denominada Editar y continuar.

En lugar de

recorrer el cdigo lnea a lnea o in struccin a instruccin, podemos dejar


que el pro grama se ejecute hasta en contrar un punto de interrupcin, y
entonces c omenzar l a depuraci n. Co n ello, el proces o de depuracin se
acelera m ucho. Hay muchos lengua

jes de progr

instrucciones o constru cciones que suspenden la


programa en modo de interrupcin. Vi
instruccin Stop. Lo s puntos
instrucciones, ya que

amacin q ue tiene
ejecucin y dejan e

sual Basic, por ej emplo, incluye la

de interrupcin son distintos

de estas

NO son cdigo fuente que haya que agregar

al

programa. N o h ay qu e escribir u na in struccin de punto de interrupcin en


una ve ntana de cdigo fuente . L os pu ntos de in terrupcin se sol icitan a
travs de la interfaz del depurador, y es el depurador el que los establece
automticamente. Para insertar un punto de in terrupcin en una lnea, slo
tiene que hacer clic en el margen gris junto a la lnea en cuestin.

Recorrer paso a paso

Una vez que se ha detenido en un

interrupcin, podemos ejecutar el cdi go lnea a lnea

punto de

(lo que se conoce

como recorrer paso a paso el cd igo). Visual Debugger i ncluye una se rie de
caractersticas que nos ayudan a r ecorrer el c digo, como iteradores que le
permiten especificar c untas veces hay que recorrer

un bucle a ntes de

volver a detenerse.

Vista de datos

Visual Debugger tiene much as opciones diferentes para

ver y h acer u n segu imiento de los dat os mien tras la aplicac in est en

155

ejecucin. E l depurador nos pe

ASP.Net

rmite modificar los datos mientras la

aplicacin est detenida en modo de

interrupcin y, despus, seguir

ejecutando la aplicacin con los datos modificados.


Vista de la ventana de depuracin.

Figura 3.1
Configurar aplicaciones para depuracin
Para h abilitar la depu racin para u na aplicacin Web ASP .NET, t enemos que
configurar la aplicac in para qu e se compil e en u na versin de depu racin. Una
versin de depuracin incluye informacin que el de purador necesita para poder
recorrer el cdigo y mostrar el contenido de las vari ables. La confi guracin de una
aplicacin Web para las v

ersiones de depu

racin se rea

liza en la

seccin

Compilation del archivo Web.config de la aplicac in. Como alternativa, si slo


queremo depurar pginas indi

viduales, podemos agregar

debug=true a la

directiva @ Page en las pginas que desea depurar.

Depuracin local y remota


Si estamos ejecutando un servidor Web

localmente, como IIS, po demos depurar

aplicaciones que se ejecuten localmente en nuestro equipo, de forma que podamos


ver las pginas en un explorador.
Si no podemos ejecutar una pgina loca
servidor Web o porqu

lmente, porque no podemos ejecutar un

e la aplic acin n o est dispon ible loca lmente, podemos

depurar una aplicac in que se e jecute en otro servidor. Para poder realiz

ar la

depuracin de manera remota, tenemos instalar los componentes de depuracin


remota de Visual Studio en el servidor remoto.

156

ASP.Net

Permisos para la depuracin


La depuracin de un proceso requiere ms privilegios que su ejecucin. Por
tanto, ade ms de co nfigurar la aplica cin para la

depuracin, tenemos que

asegurarnos tambin de que disponemos de los permisos adecuados para asociarla


a un proceso con el f in de depurarla. Los administradores pueden depurar cualquier
proceso, pero los usuarios tienen permis o pa ra depurar procesos que se ejecutan
bajo su pro pia identidad de us uario local, pero no puede n depurar l os procesos de
otro usuario.

157

ASP.Net

EJERCICIOS DE REPASO DE LA UNIDAD DIDCTICA 3: REVISANDO EL


DOCUMENTO
ENUNCIADOS.
1. Seleccionaelcontrolquenotieneunainterfazvisible

2. Se puede escribir el cdigo para acceso a los datos utilizando clases del espacio de
nombres

3. Seleccionaaqucategoraspertenecenloscomponentesdecliente

4. Elarchivoweb.configseguardaeneldirectoriorazde

158

SOLUCIONESALOSEJERCICIOSDEREPASO.UNIDADDIDCTICA3
1. Larespuestacorrectaes:Repeater
2. Larespuestacorrectaes:AyB.
3. Larespuestacorrectaes:Componentes,comportamientosycontroles.
4. Larespuestacorrectaes:Elsitiowebydelaaplicacin.

159

ASP.Net

ASP.Net

PRCTICAS
ENUNCIADOS.
1.

Creamos un servicio Web XML que nos da la informacin de nuestros


clientes. Una vez realizadas las pruebas del servicio y siendo stas
correctas procedemos a su distribucin en un directorio virtual nuevo en
nuestro ordenador de produccin. Qu mecanismo de distribucin
deberamos utilizar?

2.

Creamos un servicio Web XML que procesa la informacin de las tarjetas


de crdito. Este servicio lo usarn ordenadores que corren con sistemas
operativos Microsoft Windows, Unix, o Linux. Deberemos asegurarnos
que los credenciales que el cliente pase al servicio sean seguros y no
sean comprometidos. Necesitamos configurar la autenticacin de este
servicio. Qu tipo de autenticacin deberamos utilizar?

160

ASP.Net

3.

Creamos un servicio Web XML que usa la clase Trace para dar salida en
un fichero log

los mensajes de error, mensajes de advertencia y

mensajes de informacin . Este servicio utiliza el objeto TraceSwitch


para filtrar las trazas de salida. La propiedad DisplayName del objeto
TraceSwitch contiene "ABSwitch". Todas las trazas aparecen en el
fichero log. Queremos mover este servicio a produccin configurando el
servicio Web XML para que de salida solamente a los mensajes de error.
Qu deberamos hacer?

4.

Tenemos una aplicacion ASP.NET que se llama MyProject en nuestro


maquina cliente. Esta aplicacin tiene una pgina que se llama
Calendario.aspx. que est cargada en un directorio virtual llamado
Agenda, que es una subcarpeta del directorio MyProject. La
pgina Calendario.aspx usa cookies para hacer trazas de las
modificaciones de la agenda durante la sein de usuario, as que el
usuario puede deshacer las modificaciones que sean necesarias. Al
distribuir la aplicacin en una mquina llamada TestKing1, necesitamos
ver los valores de la cookie despus de la secuencia de acciones para
ayudar a identificar la causa del problema. Aadimos el siguiente
elemento
al
fichero
Web.config:
<trace
enabled=true
pageOutput=false/>
Queremos visualizar la informacin de salida de la traza en la mquina
cliente. Qu URL deberamos usar?

161

ASP.Net

5.

Al distribuir una aplicacin cuando ocurre un error, el usuario es


redirigido a una pgina personalizada de errores que est especificada
en el fichero Web.config. Los usuarios informan que una pgina en
particular est generando errores varias veces.

Necesitamos reunir

informacin detallada del error para esa pgina para asegurarnos que
los usuarios de la aplicacin puedan continuar viendo la pgina de
errores. qu deberamos hacer?

6.

En los elementos de un formulario se deben cumplir unas reglas. Indicar


cul de las siguientes no es correcta:

7.

Si un mdulo HTTP necesitara ser limpiado. Qu metodo deberas


incluir?

8.

Para incluir un control de usuario en una pgina de formularios Web


Forms, en la pgina Web ASP.NET contenedora, crearemos una directiva
@ Register. Indicar que conjunto de atributos necesitaramos tener
en esta directiva?

162

163

ASP.Net

ASP.Net

SOLUCIONES A LAS PRCTICAS.

1. La respuesta correcta es: Setup de un proyecto web


2.

La respuesta correcta es: Certificado de cliente

3. La respuesta correcta es: Aadir al fichero Web.config el segmento de cdigo


siguiente:
<system.diagnostics><switches><add

name
= "TestKSwitch" val

=
ue "1"/>

</switches></system.diagnostics.
4. La respuesta correcta es:
HTTP://TestKing1/MyProject/Agenda/Calendario.aspx?trace.axd.
5. La respuesta correcta es:
En el fiche ro Web.config, cambiamos el

atributo del elemento customErrors

RemoteOnly y accedemos a la pgina desde el navegador del servidor


6. La respuesta correcta es:
La pgina puede contener varios elementos form
7. La respuesta correcta es:
Dispose()
8. La respuesta correcta es:
TagPrefix, TagName y src

164

ASP.Net

GLOSARIO
A
Aplicacin Web ASP.Net
Aplicacin que procesa las so

licitudes HT TP (solic itudes web) y

se ejecuta en

ASP.NET. Un a aplicaci n Web ASP. NET pu ede in cluir pgin as ASP .NET, serv icios
web, controladores HTTP y mdulos HTTP.
Archivo de cdigo subyacente (code-behind file)
Archivo de cdigo que contiene la clase
programa de una aplicacin de

de pgina que implementa la lg ica de

Web Fo rms o de formularios

Web Forms

para

dispositivos mviles de ASP.NET


Archivo de configuracin (configuration file)
Archivo XML con la ex tensin .config que contiene la con figuracin de las opcion es
para una a plicacin o sitio Web. Los arch ivos de confi guracin comunes i ncluyen
Machine.config y Web.config.
ASP.Net
Conjunto de tecnologas de Mic

rosoft .NET Framework para la creacin

aplicaciones y servicios web. Las pginas


generan l enguaje de

ASP.NET se ejecutan en

marcado (como HTML,

WML o

de

el serv idor y

XML) q ue s e env a a un

explorador mvil o de escrit orio. L as pgin as ASP .NET u tilizan u n modelo d e


programacin compilado y basado en eventos que mejora el rendimie nto y permite
la separacin de la lgica de aplicacin

y de la interfaz de us uario. Las pginas

ASP.NET y los arch ivos de serv icios w eb creados con AS P.NET contienen lgica de
servidor (en vez de lgi

ca de cli ente) escrita en Visual Bas ic, C# o cualquier

lenguaje compat ible co n . NET. Las aplicac iones y los servicios w eb aprov echan las
caractersticas de

Common Language Runtim e, como la seguridad de tipos,

la

herencia, la interoperabilidad entre lenguajes, el control de versiones y la seguridad


integrada.
Autenticacin
Proceso de detectar y comprobar la identi dad de un principal mediante el examen
de las credenciales del usuario y su consulta a una autoridad determinada
Autorizacin
Proceso de limitar derechos de

acceso mediante l a concesi n o negaci n de

permisos especficos a una identidad autenticada o un principal

165

ASP.Net

C
Cach de ensamblados global (GAC)
Cach de c digo para todo el eq uipo que almacena los ensamblad os instalad os
especficamente para

ser compartidos por

varias ap licaciones del equipo. Las

aplicaciones imp lementadas en l a cach de ensamblados global deben tener


nombres seguros
Cach del ensamblado
Cach de cdigo utiliz ada para el almac enamiento sim ultneo de ensamblados. La
cach consta de dos partes: la cach de ensamblados global contiene ensamblados
que se instalan explcitamente para co

mpartirse entr e varias a plicaciones de l

equipo y la cach de descarga almacena cdigo descargado desde Internet o desde


sitios de la intranet, aislado de la aplicacin que caus la descarga, de forma que el
cdigo descargado en nombre de una aplicacin o de una pgina no afecte a o tras
aplicaciones.
Catlogo (catalog)
Archivos que se instalan en Windows Vista para que el reproductor multimedia sepa
cmo interpretar los archivos descargados de internet.
Clase
Tipo de referencia que encapsula datos (c onstantes y campos) y el comportamiento
(mtodos, propiedad es, indizadores, ev

entos, operadores, constructores

de

instancia, constructores estticos y destructores), y puede contener tipos anida dos.


Los tipos d e clase admiten la herencia, un mecanismo medi ante el cual una cl ase
derivada puede extender y es

pecializar una clase base.

Clase de Cdigo subyacente (code-behind class)


Clase a la

que tiene acceso un archivo

.aspx pero q ue reside

en un archivo

independiente (como un archivo .dll o .cs). Por ejemplo, puede escribir una clase de
cdigo sub yacente q ue crea un contro

l de serv idor ASP .NET personalizado y

contiene cdigo al que se llama desde un archivo .aspx, p ero que no reside dentro
del archivo .aspx.
Cdigo administrado
Cdigo ejecutado por
ejecutarlo

el entorno de

directamente el siste

administrado obtienen servic

Common Lang uage Runti me en l ugar de

ma op erativo. Las

ios de

Common Lang uage Runt ime, como l

166

aplicaciones de cdigo
a

ASP.Net

recoleccin au tomtica de eleme ntos no ut ilizados, la comprobacin del t ipo de


motor en tiempo de ej ecucin y la compat ibilidad con la segu ridad, en tre ot ros.
Estos servicios ayudan a proporcio nar un com portamiento uni forme i ndependiente
de la plataforma y del lenguaje de las aplicaciones de cdigo administrado.
Cdigo no administrado
Cdigo ejecutado directamente p or el

sistema operativo, fuera del entorno de

Common L anguage R untime. El cdi go no administrado debe

suministrar sus

servicios propios de recolecci n de elementos no utilizados, comprobacin de tipos,


compatibilidad con la s eguridad, et ctera, al contrario que el cdigo administrado,
que recibe estos servicios de Common Language Runtime.
Common Language Runtime (CLR)
Motor que es el ncleo de la ejecucin de cdigo administrado. El motor en tiem po
de ejecuci n proporciona al cdigo admini strado servicios como integracin entre
varios leng uajes, seguridad de acceso a cdigo, administra cin de la duracin de
los objetos, y compatibilidad con la depuracin y la generacin de perfiles.
Common Language Specification (CLS)
Subconjunto de carac tersticas d el lenguaje admi tidas por Common Langu
Runtime, incl uyendo funciones c omunes de vari os l enguajes de
orientados a objetos. Se garan

age

programacin

tiza qu e las herramientas y los componentes

compatibles con CLS pu eden in teroperar con otras herramientas y componentes


compatibles con CLS.
Consumidor (consumer)
En una conexin de elementos Web, control de servidor que recibe los datos de un
control de proveedor y lo proces a o pres enta. Un consumidor puede ser cualquier
tipo de control de servidor, pero se

debe disear para qu e f uncione como un

consumidor. Un con sumidor debe tener


especial marcado con un atri
fuente. Est e mtodo

un mtodo de devolu cin de llamad a

buto Con nectionConsumerAttribute en el c

recibe los datos

del proveedor en

digo

el formulario de una

instancia de interfaz.
Control de origen de datos
Objeto que se puede agregar a una pgina

Web ASP.N ET q ue enc apsula la lgica

necesaria para conectarse a un origen de datos, como una base de d atos o archivo
XML, y que puede ejecutar co nsultas o cual quier otro comando de acceso a datos.

167

ASP.Net

Un control de origen de datos pue de a su vez proporcionar datos a otros contr oles
en esa pgina.
Control de servidor ASP.NET
Componente del se rvidor que encapsula la interfaz de u suario y otra funcionalidad
relacionada. Un control de servido r ASP.NET deriva d irecta o indirec tamente de la
clase System.Web.UI.Control. E l supracon junto de controles de servidor ASP.NET
incluye controles de s

ervidor Web, cont roles de servidor HTML y controles de

ASP.NET Mobile. La si ntaxis de pginas de un control de serv idor ASP.NET inclu ye


un atributo runat="server" en la etiqueta del control.
Control de servidor HTML
Control de servidor

ASP.NET que

pertenece al espacio

de nombres

System.Web.UI.HtmlControls. Un control de servidor HTML se asigna directamente


a un elemento HTML y se declara en una pgina ASP.NET como un elemento HTML
marcado por un atributo runat="server", por ejemplo.
Control de usuario
Control de serv idor cre ado de man era declar ativa u tilizando la mis ma sin taxis qu e
una pgina ASP.N ET y guardado como archivo de texto con la extensin .ascx. Los
controles de usuari o permi ten di vidir y reu tilizar la f uncionalidad de pgina. Al
solicitarlo, el marco de trabajo de pgi

nas analiza un control de usuari o en una

clase der ivada de System.Web.UI.User

Control y compila d

icha clase en un

ensamblado qu e vu elve a u tilizar en solicit udes post eriores. L os con troles de


usuario son fciles de desarrollar debido a su creacin de estilos de pgina y a

su

implementacin sin previa compilacin.


Control dinmico
Control de elem entos Web que se conserva en u n almacn de personal izacin; no
aparece en el marcad o declarat ivo de una pgina .aspx. Cua ndo s e agrega a una
pgina, el control WebPartMa nager crea automticamente una i nstancia del control
a partir del almacn de personalizacin en futuras solicitudes.
Control personalizado (custom control)
Control creado por un usuari

o o por un pr

pertenece a la bibliot eca de clases de

oveedor de software tercero que

no

.NET Framework. Se trata de un tr mino

genrico q ue tambin incluye los controle

s de usuari o. En l os formul arios Web

Forms ( pginas ASP .NET) se ut ilizan con troles de serv idor personal izados. En las

168

ASP.Net

aplicaciones de los f ormularios W indows Forms se utilizan controles de cliente


personalizados.
Controles de elementos web
Forma general de hacer referencia a cualqu iera de los dis tintos tipos de controles
en el conjunto de controles de elementos Web
Control dinmico
Control de elem entos Web que se conserva en u n almacn de personal izacin; no
aparece en el marcad o declarat ivo de una pgina .aspx. Cua ndo s e agrega a una
pgina, el control WebPartMa nager crea automticamente una i nstancia del control
a partir del almacn de personalizacin en futuras solicitudes.
Controles de servidor de validacin
Conjunto de controles de servidor, inclui do en ASP.NET, que comprueban los datos
proporcionados por el usuario. Los datos se comprueban a medida que llegan desde
los controles de servid or HTML y los cont roles de servid or Web (por ejemplo, un
formulario de pgin a Web) u tilizando requ isitos def inidos por el pro gramador. L os
controles de validacin ejecutan la comprobacin de entrada en cdigo del servidor.
Si el usua rio est trabajando con un

explorador co mpatible c on D HTML, lo s

controles de v alidacin t ambin pu eden realiz ar la v alidacin med iante script de


cliente

D
Datos dinmicos
Marco que facilita la creacin de aplicac iones web controladas por da tos. Los datos
dinmicos u tilizan pgin as person alizables y

plantillas de campo,

scaf folding,

metadatos definibles por el usuario y una denominacin basada en convencin para


crear interfaces de usuario que

muestran datos, permit en a los usuarios n avegar

por las rela ciones en tre las t ablas, as co mo modificar y crear dato s (operacion es
CRUD).
Devolucin de datos asincrnica
Proceso de enviar los datos de la pgina web (adems d el estado de vista y o tros
metadatos necesarios) desde el explorador al servidor s in una devol ucin de datos
completa y si n bl oquear al usuari o para qu e pueda conti nuar tra bajando en l a

169

ASP.Net

pgina. Las devoluciones de datos asincrn icas son una caracterstica importante
de la tecnologa de AJAX.

E
Encapsulacin
Almacn de variables c reado en el servid or para el usuari o actual ; cada usuari o
mantiene un estado de sesi n independiente en el serv idor. El estado de sesin s e
utiliza n ormalmente para almac enar in formacin especf ica de l u suario en tre la s
devoluciones de datos
Enlace de datos
Proceso o mtodo de configuracin de co ntroles en un formul ario o pgi na Web
para extraer datos de un origen de datos o escribir datos en l como una base de
datos, archivo XML, etc.
Ensamblado
Conjunto de uno o var ios archivos que pe rtenecen a una versin y se imp lementan
como unidad. Un ensa mblado es el b loque d e creac in prin cipal de u na aplica cin
.NET Fram ework. Tod os los tipos y recurs

os administrados se incluyen e

ensamblado y se marc an como accesibl es ni camente dentro del


bien como accesibles desde cdigo de

n un

ensamblado o

ot ros ensamblados. Los ensamblados

tambin juegan un papel clave en la seguridad. El sistema de seguridad de acceso a


cdigo u tiliza in formacin acerca del en samblado para determinar el conjunto

de

permisos que se concede al cdigo del ensamblado.


Espacio de nombres
Esquema d e nombres lgico para agrupar los tipos relacionados. .N ET Framework
utiliza u n e squema de n ombres j errquico p ara agru par los t ipos en cat egoras
lgicas de funcionalidad relacionada, como la t ecnologa ASP.NET o la f uncionalidad
de interaccin remota. Las herra

mientas de diseo pueden utilizar espacios

nombres para que los programadores pueda

n examinar y

de

hacer r eferencia ms

fcilmente a los t ipos en el cd igo. Un en samblado individual puede contener tipos


cuyos nombres jerrquicos tienen distintas races de espacio de nombres y una raz
de espacio de nombres lg

ico puede ab

arcar varios ensamblados. En .NET

Framework, un espaci o de nombres es una comodidad para la no menclatura lgica


en tiempo de diseo, mientr as que un ensamblado establece el mbito de nombres
para los tipos en tiempo de ejecucin.

170

ASP.Net

Esquema [schema]
Coleccin de definiciones

de clase que desc

riben objet os administrados en un

entorno concreto.
Esquemas XML (XSD)
Lenguaje e stndar de World Wide Web

Consortium (W3C ) ut ilizado para crear

documentos de esquema XML. El esquem a XML est formado por dos partes : un
conjunto de tipos pr

edefinido ( por ej emplo, string, dateTi me, decimal) y un

lenguaje XML para de finir nuevo s ti pos (po r ejemplo, compl exType, minOccurs,
element). Estado de aplicacin
Almacn de variables creado en el servidor

para la aplicacin actual y

compartido

por t odos los u suarios. El est ado de aplic acin se ut iliza n ormalmente para
almacenar informacin utilizada por todos los usuarios, como la con figuracin para
todas las aplicaciones.
Estado de control (control state)
Campo en una pgina Web AS P.NET que almacena los valores de propiedades
actuales para los con troles de ser vidor en la pgin a. El estado de con trol se u tiliza
para volver a crear

la pgina y restable

cer la config uracin anterior

en cada

devolucin de datos.
Estado de sesin
Almacn de variables c reado en el servid or para el usuari o actual ; cada usuari o
mantiene un estado de sesi n independiente en el serv idor. El estado de sesin s e
utiliza n ormalmente para almac enar in formacin especf ica de l u suario en tre la s
devoluciones de datos
Estado de vista
Campo en una pgi na Web ASP. NET do nde puede al macenar l a confi guracin que
es necesaria conservar entre de

voluciones de datos. Tambin suele s

ignificar

estado de control.

G
Globalizacin
Proceso de disear y programar un produc to de software de manera que f uncione
en varias configuraciones regionales. La globalizacin implica la identificacin de las
configuraciones region ales que s e deben

171

admitir, e l di seo de caracterstic as

ASP.Net

compatibles con dicha s configura ciones re gionales y la escritura de cdigo

que

funcione igual de bien en cualquiera de las configuraciones regionales admitidas.

H
Host
En el modelo de programacin de complementos de .NET Framework, es el
ensamblado de la aplicacin host que se comunica con un complemento a travs de
la canalizacin de comunicacin

I
IntelliSense
Tecnologa de Microsoft que

permite an alizar el c

digo fuente al mostrar

definiciones de clase y comentarios cuando el cursor se desplaza sobre una funcin.


IntelliSense t ambin pu ede compl etar los nombres de funcin cua ndo se escriben
manualmente en el IDE.
Interface
Tipo de referencia que de fine un contrato. O tros ti pos impl ementan una i nterfaz
para garantizar que admiten ciertas oper

aciones. L a in terfaz especifica los

miembros que las clases u otras interfaces que los implementan deben suministrar.
Al igual qu e las cl ases, las interfaces pu eden contener como m iembros mtodos,
propiedades, indizadores y eve ntos. Vea ta mbin: contrato, indizador, propiedad,
tipo de referencia.
Instancia
Para poder usar una cl ase u objeto, hay

que crear una instancia del mismo. Es

decir, debemos declarar una variable y a esa variable asignarle el objeto o c lase
en cuestin para que podamos usarlo. Es
objeto par poder usarlo

172

como si tuvisemos que darle v

ida al

ASP.Net

L
Language Integrated Query (LINQ)
Sintaxis de cons ulta que defi ne u n co njunto de op eradores de consul ta que
permiten e xpresar operaciones d e cruce seguro, filtro y proy eccin de manera
directa y declarativa en cualquier lenguaje de programacin basado en .NET.
Lenguaje de definicin de esquemas conceptuales (CSDL)
Lenguaje basado en XM

L qu e se u

tiliza para def

inir t ipos de en

tidades,

asociaciones, contenedores de entidades, conjuntos de e ntidades y conjuntos de


asociaciones de un modelo conceptual.
Lenguaje de definicin de esquemas de almacenamiento (SSDL)
Lenguaje basado en

XML qu e se u tiliza p ara def inir los t ipos de en tidades,

asociaciones, contenedores de entidades, conjuntos de e ntidades y conjuntos de


asociaciones de un mo delo de almacenamiento, que no rmalmente se corresponde
con un esquema de base de datos.
Lenguaje

de

descripcin

de

servicios

Web

(WSDL,

Web

Services

Description Language)
Lenguaje de contrato basado en XML para

describir los servicios de red ofrecid os

por un servidor
Lenguaje de marcado de aplicaciones extensible (XAML)
Lenguaje de marcado

para la p

rogramacin declarativa de aplic

aciones. XAML

simplifica la creacin de una interfaz de usuario para el modelo de programacin de


Windows Presentation Foundation. Puede crear elementos visi bles de la interfaz de
usuario en el marcado declarativo XAML y, a c ontinuacin, separar l a definicin de
la interfaz de usuario de la lg ica en tiempo de ejecucin util izando archivos de
cdigo sub yacente, que se une n al marc ado mediante defini ciones de clases
parciales.
Lenguaje de marcado extensible (XML)
Subconjunto del Leng uaje de marcado gene ralizado estndar (SGML) opti mizado
para su uso a travs del Web. XML propor ciona un mto do uniforme para desc ribir
e intercambiar datos estructurados que es independiente de las apl icaciones o l os
proveedores.

173

ASP.Net

M
Metadatos
Informacin que describe todos

los

elementos administrados

por Common

Language R untime: u n ensambl ado, el arch ivo cargabl e, el ti po, el mtodo, etc.
Esto pu ede in cluir informacin n ecesaria par a la depu racin y la recoleccin de
elementos no utilizados, as como atributos de segu ridad, clculo de referencias de
datos, definiciones ex tendidas de clases y

miembros, enlace de versin y otra

informacin requerida por el motor en tiempo de ejecucin.


Mtodo asincrnico
Llamada al mtodo que devuelve inmediatamente al llamador sin tener en cuenta si
ha fi nalizado el procesami ento. Los resu ltados del procesamien to se dev uelven
mediante otra llamada en otro s

ubproceso. Los mt odos asin crnicos liberan e l

llamador de tener que esperar hasta que el procesamiento haya finalizado


Mtodo de extensin
Mtodo estt ico qu e se pu ede in vocar u tilizando la sin taxis de lo s mt odos de
instancia. De hecho , los mtodos de ex tensin permi ten extende r ti pos y ti pos
construidos existentes con otros mtodos.
Modo clsico
En IIS 7.0, es una configuracin en la que el procesamiento de solicitudes emula el
modelo utilizado en IIS 6.0. En el modo clsico, IIS recibe las solicitudes y las enva
a los comp onentes IS API con ar reglo a las extensi ones de nombre de archivo
asignadas. IIS y el proceso que

administra la so licitud se e jecutan en procesos

independientes. Por ejemplo, la s s olicitudes de recursos de ASP.NE T se envan al


componente aspnet_isapi.dll.
Modo de presentacin
Distintos estados de presentacin que se
elementos Web, que

pueden i ntroducir en una pgi na de

permiten a los usua rios modifica r una pgina de manera

especificada. Los esta dos establecidos que se incluyen con el control de elementos
Web son: catlogo, cone

xin, di seo,

edicin y

expl oracin.

El modo

predeterminado o normal para una pgina Web es explorac in. Los programadores
pueden extender esta caracterstica del modo de presentacin agregando modos de
presentacin person

alizados, qu

e requ

WebPartManager

174

ieren la ex

tensin

de la cl

ase

ASP.Net

Modo integrado
En IIS 7.0, configuracin en l a que IIS y ASP.NET comparten el proc esamiento de
solicitudes en f uncin de u na can alizacin qu e admi te t anto los compon entes
creados con .NET Framework como los componentes nativos. En el modo integrado,
los compon entes de ASP .NET, como los m dulos HT TP, se pu eden u tilizar par a
administrar t odas las solicitudes w eb, in cluso aqullas que no

va n destinadas a

recursos de ASP.NET.
Mdulo (HTTP)
Componente que se puede registrar como p arte de la duracin de la solicitud d e
ASP.NET y que puede leer o cambiar la soli citud o la respuesta c uando se proc esa.
Los mdu los HT TP se u tilizan con f recuencia para rea lizar t areas e speciales qu e
necesitan supervisar cada solicitud, como estadsticas seguridad o del sitio.

M
Metadatos
Informacin que describe todos

los

elementos administrados

por Common

Language R untime: u n ensambl ado, el arch ivo cargabl e, el ti po, el mtodo, etc.
Esto pu ede in cluir informacin n ecesaria par a la depu racin y la recoleccin de
elementos no utilizados, as como atributos de segu ridad, clculo de referencias de
datos, definiciones ex tendidas de clases y

miembros, enlace de versin y otra

informacin requerida por el motor en tiempo de ejecucin.


Mtodo asincrnico
Llamada al mtodo que devuelve inmediatamente al llamador sin tener en cuenta si
ha fi nalizado el procesami ento. Los resu ltados del procesamien to se dev uelven
mediante otra llamada en otro s

ubproceso. Los mt odos asin crnicos liberan e l

llamador de tener que esperar hasta que el procesamiento haya finalizado


Mtodo de extensin
Mtodo estt ico qu e se pu ede in vocar u tilizando la sin taxis de lo s mt odos de
instancia. De hecho , los mtodos de ex tensin permi ten extende r ti pos y ti pos
construidos existentes con otros mtodos.
Modo clsico
En IIS 7.0, es una configuracin en la que el procesamiento de solicitudes emula el
modelo utilizado en IIS 6.0. En el modo clsico, IIS recibe las solicitudes y las enva

175

ASP.Net

a los comp onentes IS API con ar reglo a las extensi ones de nombre de archivo
asignadas. IIS y el proceso que

administra la so licitud se e jecutan en procesos

independientes. Por ejemplo, la s s olicitudes de recursos de ASP.NE T se envan al


componente aspnet_isapi.dll.
Modo de presentacin
Distintos estados de presentacin que se
elementos Web, que

pueden i ntroducir en una pgi na de

permiten a los usua rios modifica r una pgina de manera

especificada. Los esta dos establecidos que se incluyen con el control de elementos
Web son: catlogo, cone

xin, di seo,

edicin y

expl oracin.

El modo

predeterminado o normal para una pgina Web es explorac in. Los programadores
pueden extender esta caracterstica del modo de presentacin agregando modos de
presentacin person

alizados, qu

e requ

ieren la ex

tensin

de la cl

ase

WebPartManager
Modo integrado
En IIS 7.0, configuracin en l a que IIS y ASP.NET comparten el proc esamiento de
solicitudes en f uncin de u na can alizacin qu e admi te t anto los compon entes
creados con .NET Framework como los componentes nativos. En el modo integrado,
los compon entes de ASP .NET, como los m dulos HT TP, se pu eden u tilizar par a
administrar t odas las solicitudes w eb, in cluso aqullas que no

va n destinadas a

recursos de ASP.NET.
Mdulo (HTTP)
Componente que se puede registrar como p arte de la duracin de la solicitud d e
ASP.NET y que puede leer o cambiar la soli citud o la respuesta c uando se proc esa.
Los mdu los HT TP se u tilizan con f recuencia para rea lizar t areas e speciales qu e
necesitan supervisar cada solicitud, como estadsticas seguridad o del sitio.

N
NET Framework
Componente integral

de Windows que ad

mite la cr eacin, im plementacin y

ejecucin de la siguiente compilac in de aplicaciones y servicios we b. Proporciona


un entorno de ml tiples lenguajes basado en estndar es y muy producti vo para
integrar las in versiones ex istentes con aplicacion es y serv icios d e la prx ima
generacin, as como la agilidad necesaria para resolver los desafos que suponen la
implementacin y el

funcionamiento de

176

las aplicacion es para Internet. .N

ET

ASP.Net

Framework se compone de tres par tes principales: Common Language Runtime, un


conjunto jerrquico de bibliotecas

de

clases uni ficadas y una

versin de ASP

dividida en componentes que se denomina ASP.NET.


Nivel de comunicacin asincrnica
Nivel de f uncionalidad de AJ AX qu e se

encarga de

la comunicacin entre el

explorador y el servidor

P
Pgina ASP.NET
Componente de una aplicacin ASP.NET.
Pgina de contenido (content Page)
Pgina Web que se configura para combinar se con una p gina principal para crear
una pgina completa.
Paginacin
Mecanismo que separa de forma automtica

el contenido de los formularios Web

Forms para disposit ivos mv iles d e ASP .NET en grupos ms pequeos de pgina s
representadas destinadas a encajar co

n un dispositivo especfico. Tambin

representa elem entos de la in terfaz de u suario qu e se pu eden ut ilizar para bu scar


otras pginas.
Plantilla
Fragmento de pgina declarativo que se utiliza para proporcionar una interfaz visual
de un control de servidor ASP.NET con plantilla. Una plantilla contiene elementos de
presentacin entre los que se incluyen texto literal, HTML y expresiones de enlace a
datos, as como elementos de sintaxis de

clarativos que repres entan controles de

servidor ASP.N ET. Una plantilla puede pers istir como un archi vo de texto co n una
extensin .ascx. Vea tambin: control de servidor ASP.NET, control con plantilla.

R
Representacin parcial de la pgina
Proceso de actualizar slo una regin de una pgina web durante una devolucin de
datos asincrnica. Esta operaci

n se

realiza normalmente con l

177

os control es

ASP.Net

UpdatePanel. La repres entacin parcial de pgina es una caracterstica importante


de la tecnologa de AJAX.
s
Scaffolding
Proceso de generacin de pl antillas de pgina web basad as en esquemas de base
de dat os. En ASP. NET, los dat os din micos utilizan la t cnica de scaf folding para
facilitar la generacin de interfaces de usuario basadas en web que permite a los
usuarios ver y actualizar una base de datos.
Seguimiento
Proceso de capturar y mostrar informaci n de depuracin sobre una pgina
cuando la

pgina se est ejecutando.

Web

La i nformacin de seguimiento incluye

encabezados HTTP y el estado de control. Puede mostrar el seguimiento genera do


en la pgina o en un visor de seguimiento independiente.
Servicio de aplicacin
En ASP.NET, es una fu ncin integrada para tareas de ap licacin comunes. ASP.NET
incluye serv icios de a plicacin para la au tenticacin ( pertenencia de ASP .NET),
informacin persistente de cada usuario (propiedades de perfiles), etc.
Servicios de aplicaciones cliente
En las apli caciones basadas en Win

dows, es un a funcionalidad in tegrada qu e

permite obt ener acceso a los servicios de


aplicacin comunes, i

a plicaciones ASP .NET para t areas de

ncluida l a confi guracin de inicios de sesin remotos,

funciones y aplicaciones.
Servicios Web XML
Unidades de lg ica de aplicacion es qu e proporcionan datos y servicios a otras
aplicaciones. L as aplica ciones obt ienen acceso a los se rvicios Web XML media nte
protocolos Web estndar y form

atos de da tos como

HTTP, XML y SOAP,

con

independencia de cmo se imp lementa ca da serv icio W eb XM L. L os serv icios Web


XML combinan los me jores aspectos del
Web, por lo que so

desarrollo basado en com ponentes y el

n una base fundamental del modelo de programacin

Microsoft .NET.

178

de

ASP.Net

SOAP
Protocolo simple basad o en XML para inte rcambiar informacin estructurada y de
tipos en el Web. El protocol o no conti ene semntica de apl icacin ni de transporte,
por lo que resulta muy modular y extensible.

T
Tipo parcial
Un tipo parcial es un tipo

que se define de f orma qu e un ti po ni co, por ejempl o

una clase, puede dividirse en varios archivos.

V
Visual Studio SDK
Kit de desarrol lo de software qu e los soci os de VSIP u tilizan para ex tender e l
entorno integrado de desarrollo de Visual Studio.

W
WML
Lenguaje de marcado basado en XML que se utiliza para especificar el contenid o y
la interfaz de usuario de dispositivos de

banda estrecha , incluidos los telfonos

celulares y los localizadores (pager). WML es parte de WAP.

179

Das könnte Ihnen auch gefallen