Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Microsoft ASP - Net - Curso Completo - Español
Microsoft ASP - Net - Curso Completo - Español
2000
Incorpora funcionalidad basada en XML, soporte de
estndares Worldwide Web Consortium (W3C), la
capacidad de manipular datos XML utilizando Transact
SQL (T-SQL), un anlisis flexible y potente basado en
Web y un acceso seguro a los datos a travs de la Web
utilizando HTTP.
Microsoft
BizTalk
Server 2000
Proporciona servicios de integracin de aplicaciones
empresariales (EAI - enterprise aplicacin integration),
integracin negocio a negocio (business-to-business) y
tecnologa avanzada de orquestacin BizTalk
Orchestration para crear procesos de negocio
dinmicos que abarcan aplicaciones, plataformas y
organizaciones a travs de Internet.
Microsoft Host
Integration Server 2000
Proporciona la mejor forma de integrar Internet,
intranet y las tecnologas cliente/servidor, manteniendo
al mismo tiempo las inversiones realizadas en los
sistemas existentes. Microsoft Host Integration Server
2000 sustituye a Microsoft SNA Server.
Microsoft Exchange
2000 Enterprise Server
Est basado en la potente tecnologa de mensajera y
colaboracin de Exchange e incorpora nuevas
funcionalidades importantes, adems de mejorar la
fiabilidad, la escalabilidad y el rendimiento de su
arquitectura bsica. Otras caractersticas mejoran la
integracin de Exchange 2000 con Microsoft Windows
2000, Microsoft Office 2000 e Internet.
Microsoft Application
Center 2000
Ofrece una herramienta para implantar y administrar
aplicaciones Web de alta disponibilidad.
Microsoft Internet
Security and
Acceleration Server 2000
Proporciona conectividad a Internet segura, rpida y
manejable. Internet Security and Acceleration Server
integra un cortafuegos empresarial extensible y
multicapa, y un cach Web escalable de gran
rendimiento. Se apoya en la seguridad y en el directorio
de Windows 2000 para obtener seguridad basada en
polticas, aceleracin y gestin en redes distribuidas.
Microsoft
Commerce Server 2000
Proporciona un marco de trabajo de aplicacin,
sofisticados mecanismos de realimentacin y
capacidades de anlisis.
Introduccin a la plataforma Microsoft .NET 5
Qu es el .NET Framework?
Descripcin del .NET Framework
Beneficios del .NET Framework
Lenguajes en el .NET Framework
Objetivo
Describir los temas que se
tratan en esta seccin.
Presentacin
El .NET Framework
proporciona todos los
servicios comunes
necesarios para la ejecucin
de aplicaciones.
En esta seccin, veremos cmo el .NET Framework proporciona todos los
servicios comunes que sus aplicaciones necesitan para ejecutarse. Estudiaremos
la disponibilidad de los servicios para cualquier lenguaje compatible con .NET
a travs de la especificacin Common Language Specification (CLS). Tambin
estudiaremos qu lenguajes estn soportados en el .NET Framework.
6 Introduccin a la plataforma Microsoft .NET
Descripcin del .NET Framework
V
i
s
u
a
l
S
t
u
d
i
o
.
N
E
T
V
i
s
u
a
l
S
t
u
d
i
o
.
N
E
T
Common LanguageSpecification Common LanguageSpecification
Visual Visual
Basic Basic
C++ C++ C# C# J# J#
.NETFramework .NETFramework
Objetivo
Explicar cmo encajan los
diversos componentes del
.NET Framework.
Presentacin
El .NET Framework
proporciona todos los
servicios comunes
necesarios para ejecutar las
aplicaciones Visual Basic
.NET. Estos servicios estn
disponibles en cualquier
lenguaje compatible con
.NET gracias a la
espeficicacin Common
Language Specification.
El .NET Framework proporciona todos los servicios comunes necesarios para
ejecutar las aplicaciones Visual Basic .NET.
Crear componentes en el .NET Framework
Antes del modelo COM, las aplicaciones estaban formadas por entidades
totalmente separadas con poca o ninguna integracin. Al utilizar COM, es
posible integrar componentes dentro de una aplicacin y entre aplicaciones
exponiendo una serie de interfaces comunes. Sin embargo, todava es necesario
que los desarrolladores escriban el cdigo para envolver, gestionar e integrar
componentes y objetos.
En el .NET Framework, los componentes se construyen sobre una base comn.
Ya no es necesario escribir cdigo para permitir que los objetos interacten
directamente entre s. En el entorno .NET, ya no es necesario escribir
envoltorios de componentes, puesto que los componentes no los utilizan. El
.NET Framework puede interpretar las construcciones a los que los
desarrolladores estn acostumbrados utilizando lenguajes orientados a objetos.
El .NET Framework soporta totalmente clases, herencia, mtodos, propiedades,
eventos, polimorfismo, constructores y otras construcciones orientadas a
objetos.
Common Language Specification
La especificacin Common Language Specification (CLS) define los mnimos
estndares que deben satisfacer los lenguajes y desarrolladores si desean que
sus componentes y aplicaciones sean ampliamente utilizados por otros
lenguajes compatibles con .NET. La especificacin CLS permite a los
desarrolladores de Visual Basic .NET crear aplicaciones como parte de un
Introduccin a la plataforma Microsoft .NET 7
equipo que utiliza mltiples lenguajes con la seguridad de que no habr
problemas con la integracin de los diferentes lenguajes. La especificacin CLS
tambin permite a los desarrolladores de Visual Basic .NET heredar de clases
desarrolladas en lenguajes diferentes.
Visual Studio .NET
En el .NET Framework, Visual Studio .NET ofrece las herramientas que
permiten el desarrollo rpido de aplicaciones.
8 Introduccin a la plataforma Microsoft .NET
Beneficios del .NET Framework
Basado en estndares y prcticas Web
Extensible
Fcil deutilizar por los desarrolladores
Diseado utilizando modelos deaplicaciones unificados
API deWindows API deWindows
Formularios FormulariosVB VB MFC/ATL MFC/ATL ASP ASP
.NETFramework .NETFramework
Objetivo
Explicar cmo los objetivos
de diseo del marco de
trabajo facilitan el desarrollo
de aplicaciones.
Presentacin
Antes de estudiar los
diversos componentes del
.NET Framework, resulta til
entender los objetivos de
diseo del .NET Framework.
Ello nos ayudar a ver cmo
el .NET Framework
simplifica el desarrollo de
software.
En esta seccin, veremos algunos de los beneficios del .NET Framework.
Objetivos del .NET Framework
El .NET Framework fue diseado para satisfacer los siguientes objetivos:
Basado en estndares y prcticas Web
El .NET Framework soporta totalmente las tecnologas existentes de
Internet, incluyendo Hypertext Markup Language (HTML), XML, SOAP,
Extensible Stylesheet Language for Transformations (XSLT), Xpath y otros
estndares Web. El .NET Framework promueve la creacin de servicios
Web dbilmente conectados y sin estado.
Extensible
La jerarqua del .NET Framework no queda oculta al desarrollador.
Podemos acceder y extender clases .NET (a menos que estn selladas)
utilizando herencia. Tambin podemos implementar herencia multi-
lenguaje.
Sugerencia
Comente que las clases de
.NET Framework que estn
selladas no pueden ser
extendidas.
Fcil de usar por los desarrolladores
En el .NET Framework, el cdigo est organizado en espacios de nombres
jerrquicos y clases. El Framework proporciona un sistema de tipos comn,
denominado sistema de tipos unificado, que utiliza cualquier lenguaje
compatible con .NET. En el sistema de tipos unificado, todo es un objeto.
No existen tipos variant, slo hay un tipo de cadena (string), y todos los
datos de la cadena son Unicode.
Diseado utilizando modelos de aplicaciones unificados
Introduccin a la plataforma Microsoft .NET 9
La funcionalidad de una clase .NET est disponible desde cualquier modelo
de programacin o lenguaje compatible con .NET.
10 Introduccin a la plataforma Microsoft .NET
Lenguajes del .NET Framework
Visual Basic .NET
Nueva versin de Visual Basic, con importantes innovaciones del
lenguaje
C#diseado para laplataforma.NET
Nuevo lenguaje orientado a componentes
Extensiones gestionadas deVisual C++
Proporciona una mayor potencia y control
J#.NET
Aprovecha totalmente el .NET Framework
Lenguajes de terceros
Objetivo
Presentar los lenguajes
soportados en el .NET
Framework.
Presentacin
En esta seccin,
estudiaremos los lenguajes
que Microsoft proporciona
para el .NET Framework
con Visual Studio .NET.
Tambin estudiaremos
algunos de los lenguajes
para .NET creados por
terceros desarrolladores.
La plataforma .NET es independiente del lenguaje (el .NET Framework
proporciona todos los servicios comunes necesarios para permitir la ejecucin
de los programas). El .NET Framework ofrece soporte para numerosos
lenguajes de programacin, incluyendo lenguajes de Microsoft y de terceros.
Lenguaje Descripcin
Microsoft
Visual Basic .NET
Visual Basic .NET ofrece importantes innovaciones del lenguaje respecto a versiones
anteriores de Visual Basic. Visual Basic .NET soporta herencia, constructores,
polimorfismo, sobrecarga, excepciones estructuradas, estricta verificacin de tipos, free
threading, y muchas otras caractersticas. En esta versin, Visual Basic Scripting
Edition proporciona funcionalidad completa Visual Basic.
Microsoft Visual C#
.NET
J #.NET es un lenguaje para los desarrolladores que utilicen el lenguaje J ava que
quieran generar las aplicaciones y servicios para el .NET Framework. J #.NET est
totalmente integrado con el IDE de Visual Studio .NET y est diseado para aprovechar
Introduccin a la plataforma Microsoft .NET 11
al mximo el .NET Framework.
Lenguajes de terceros Varios lenguajes de terceros soportan la plataforma .NET. Estos lenguajes incluyen
APL, COBOL, Pascal, Eiffel, Haskell, ML, Oberon, Perl, Python, Scheme y SmallTalk.
12 Introduccin a la plataforma Microsoft .NET
Cules son los componentes del .NET Framework?
Los componentes del .NET Framework
CommonLanguageRuntime-CLR
Bibliotecadeclases del .NET Framework
ADO.NET: Datos y XML
ASP.NET: Formularios Web y Servicios Web
Interfaz deusuario
Objetivo
Describir los temas que se
tratan en esta seccin.
Presentacin
En esta seccin,
estudiaremos los diferentes
componentes que integran
el .NET Framework.
En esta seccin, estudiaremos los componentes que integran el Microsoft .NET
Framework. El .NET Framework est formado por un conjunto de tecnologas
que constituyen una parte fundamental de la plataforma .NET. El .NET
Framework proporciona los bloques de construccin bsicos para desarrollar
aplicaciones y Servicios Web utilizando ASP.NET.
Introduccin a la plataforma Microsoft .NET 13
Componentes del .NET Framework
Biblioteca Bibliotecade declases clasesdel .NETFramework del .NETFramework
ADO.NET: ADO.NET: Datos Datosy XML y XML
Interfaz Interfaz
de deusuario usuario
Common LanguageRuntime Common LanguageRuntime
ASP .NET ASP .NET
Formularios Formularios
y y Servicios ServiciosWeb Web
Objetivo
Ofrecer una descripcin de
los componentes del .NET
Framework.
Presentacin
Visual Basic .NET utiliza los
componentes que
proporciona el .NET
Framework.
Los componentes principales del .NET Framework son los siguientes:
Common Language Runtime - CLR
Biblioteca de clases del .NET Framework
ADO.NET: datos y XML
ASP.NET: Formularios Web y Servicios Web
Interfaz de usuario
14 Introduccin a la plataforma Microsoft .NET
Common Language Runtime
Soporte Soportedela delabiblioteca bibliotecade declases clasesbase base
Soporte Soportede dehilos hilos COM COMmarshaler marshaler
Verificador Verificadorde detipos tipos Gestor Gestorde deexcepciones excepciones
MSIL a MSIL a
compiladores compiladores
nativos nativos
Gestor Gestor
de dec c digo digo
Recolector Recolector
de debasura basura
Motor de Motor deseguridad seguridad Motor de Motor dedepuraci depuraci n n
Cargador Cargadorde declases clases
Objetivo
Destacar algunos de los
principales componentes del
Common Language
Runtime.
Presentacin
Esta seccin ofrece una
visin general de los
diversos componentes del
Common Language
Runtime y proporciona una
breve descripcin de cada
uno. Como desarrollador de
Visual Basic, nunca ver
estas piezas fsicamente,
pero hablar sobre ellas le
ayudar a comprender
mejor la riqueza del entorno
de ejecucin.
El CLR (Common Language Runtime) simplifica el desarrollo de aplicaciones,
proporciona un entorno de ejecucin robusto y seguro, soporta mltiples
lenguajes, simplifica la implantacin y administracin de aplicaciones y
proporciona un entorno gestionado.
Sugerencia
Muchos de estos temas son
interesantes para los
desarrolladores de
Visual Basic .NET y se
tratan en diversas partes del
curso.
Qu es un entorno gestionado?
Un entorno gestionado es aquel que proporciona servicios comunes de forma
automtica. Algunos ejemplos de los tipos de servicios que proporciona un
entorno gestionado son el recolector de basura y la seguridad.
Introduccin a la plataforma Microsoft .NET 15
Componentes del Common Language Runtime
La siguiente tabla describe las caractersticas del Common Language Runtime.
Componente Descripcin
Cargador de clases Carga la implementacin de un tipo en memoria y lo prepara
para su ejecucin.
Microsoft Intermediate
Language (MSIL) a
compilador nativo
Convierte lenguaje intermedio MSIL a cdigo nativo (just-in-
time).
Gestor de cdigo Gestiona la ejecucin de cdigo.
Recolector de basura Gestiona automticamente la vida de todos sus objetos. Es un
recolector de basura multiprocesador y escalable.
Motor de seguridad Proporciona seguridad basada en evidencias en funcin del
origen del cdigo y del usuario.
Motor de depuracin Le permite depurar su aplicacin y trazar la ejecucin de
cdigo.
Verificador de tipos No permitir casts inseguros ni variables no inicializadas. Es
posible verificar IL para garantizar la seguridad de tipos.
Gestor de excepciones Proporciona una gestin de excepciones estructurada e
integrada con Windows Structured Exception Handling
(SEH). Se han mejorado los informes de errores.
Soporte de hilos
(threads)
Proporciona clases e interfaces que permiten programacin
multi-hilo.
COM marshaler Proporciona marshaling hacia y desde COM.
Soporte de la biblioteca
de clases del .NET
Framework
Integra el cdigo con el entorno de ejecucin que soporta la
biblioteca de clases del .NET Framework. La siguiente
seccin trata sobre la biblioteca de clases del .NET
Framework.
16 Introduccin a la plataforma Microsoft .NET
Biblioteca de clases del .NET Framework
System.Globalization System.Globalization
System.Diagnostics System.Diagnostics
System.Configuration System.Configuration
System.Collections System.Collections
System.IO System.IO
System.Reflection System.Reflection
System.Net System.Net
System System
System.Threading System.Threading
System.Text System.Text
System.Security System.Security System.Runtime. System.Runtime.
InteropServices InteropServices
Objetivo
Describir la biblioteca de
clases del .NET Framework
y el espacio de nombres
principal: System.
Presentacin
En esta seccin,
aprenderemos cmo la
biblioteca de clases del
.NET Framework expone
caractersticas del entorno
de ejecucin y proporciona
otros servicios de alto nivel.
La biblioteca de clases del .NET Framework expone caractersticas del entorno
de ejecucin y proporciona en una jerarqua de objetos otros servicios de alto
nivel que todo programador necesita. Esta jerarqua de objetos se denomina
espacio de nombres.
Sugerencia
La biblioteca de clases del
.NET Framework
proporciona numerosas y
potentes caractersticas
nuevas para los
desarrolladores de
Visual Basic .NET.
Por ejemplo, el espacio de
nombres Collections aade
numerosas posibilidades
nuevas, como clasificacin,
colas, pilas y matrices de
tamao automtico.
La clase de sistema
Threadingtambin ofrece
nuevas posibilidades a los
desarrolladores de
Visual Basic .NET para
crear verdaderas
aplicaciones multi-hilo.
En este punto, una
descripcin general de los
espacios de nombres puede
ser til.
Espacios de nombres System
El espacio de nombres System contiene clases fundamentales y clases base que
definen tipos de datos valor y referencia comnmente utilizados, eventos y
descriptores de eventos, interfaces, atributos y procesamiento de excepciones.
Otras clases proporcionan servicios como la conversin de tipos de datos o la
manipulacin de parmetros de mtodos, operaciones matemticas, invocacin
local y remota de programas, administracin de los entornos de aplicaciones y
la supervisin de aplicaciones gestionadas y no gestionadas.
El espacio de nombre System.Collections proporciona listas clasificadas, tablas
hash y otras formas de agrupar datos. El espacio de nombres System.IO
proporciona E/S de archivos, flujos, etc. El espacio de nombres System.NET
proporciona soporte de Transmission Control Protocol/Internet Protocol
(TCP/IP) y sockets.
Si desea ms informacin sobre los espacios de nombres, realice una bsqueda
de espacio de nombres en la documentacin del .NET Framework SDK.
Introduccin a la plataforma Microsoft .NET 17
ADO.NET: Datos y XML
DataSet DataSet DataRow DataRow
DataTable DataTable DataView DataView
System.Data System.Data
System.Xml System.Xml
System.Xml.Schema System.Xml.Schema
System.Xml.Serialization System.Xml.Serialization
Objetivo
Explicar el soporte para la
gestin de datos y XML en
el entorno de ejecucin.
Presentacin
El .NET Framework
proporciona un nuevo
conjunto de clases
ADO.NET para el manejo
de datos.
ADO.NET es la siguiente generacin de la tecnologa ActiveX Data Objects
(ADO). ADO.NET proporciona un soporte mejorado para el modelo de
programacin desconectado. Tambin ofrece un completo soporte de XML.
Sugerencia
ADO.NET ha sido creado
especialmente para ser
utilizado en Internet, y utiliza
XML como tecnologa
principal. Esto significa que
los desarrolladores ya no
necesitan pasar objetos
Recordseta travs del
sistema, limitando
potencialmente qu clientes
pueden atender. Tambin
mejora el modelo de
programacin desconectado
de versiones anteriores de
ADO.
Comente que el
conocimiento de ADO de los
desarrolladores de
Visual Basic les ser de
gran ayuda cuando cambien
a ADO.NET.
Compruebe los
conocimientos de los
estudiantes sobre los
conceptos bsicos de
XML.
Espacio de nombres System.Data
El espacio de nombres System.Data est compuesto por clases que constituyen
el modelo de objetos ADO.NET. A alto nivel, el modelo de objetos ADO.NET
se divide en dos capas: la capa conectada y la capa desconectada.
El espacio de nombres System.Data incluye la clase DataSet, que representa
mltiples tablas y sus relaciones. Estos conjuntos de datos son estructuras de
datos completamente autocontenidas que pueden poblarse desde diversas
fuentes de datos. Una posible fuente de datos podra ser XML, otra podra ser
OLE DB, y una tercera fuente de datos podra ser el adaptador directo para SQL
Server.
Espacio de nombres System.Xml
El espacio de nombres System.Xml proporciona soporte para XML. Incluye un
parseador y un escritor XML, siendo compatibles con el W3C. Las
transformaciones las proporciona el espacio de nombres System.Xml.Xsl y la
implementacin de XPath que permite navegacin de grafos de datos en XML.
El espacio de nombres System.XML.Serialization proporciona toda la
infraestructura bsica para los Servicios Web, incluyendo caractersticas como
el movimiento atrs y adelante entre objetos y una representacin XML.
18 Introduccin a la plataforma Microsoft .NET
ASP.NET: Formularios Web y Servicios Web
ASP.NET ASP.NET
System.Web System.Web
Configuraci Configuraci n n Estado deSesi Estado deSesi n n
Cach Cach
Seguridad Seguridad
Servicios Servicios
Descripcin Descripcin
Descubrimiento Descubrimiento
Protocolos Protocolos
IU IU
HtmlControls HtmlControls
WebControls WebControls
Objetivo
Presentar los Formularios y
Servicios Web.
Presentacin
Internet evoluciona
rpidamente desde los
actuales sitios Web que
nicamente sirven pginas
de interfaz de usuario a
navegadores, hasta una
prxima generacin de
sitios Web programables
que integran directamente
organizaciones,
aplicaciones, servicios y
dispositivos. Estos sitios
Web programables son
mucho ms que sitios a los
que se accede de modo
pasivo; son Servicios Web
reutilizables e inteligentes.
ASP.NET es un marco de trabajo de programacin basado en el Common
Language Runtime y que puede ser utilizado en un servidor para crear potentes
aplicaciones Web. Los Formularios Web de ASP.NET proporcionan una forma
fcil y potente de generar interfaces de usuario (IUs) Web dinmicos. Los
Servicios Web de ASP.NET proporcionan las piezas para construir aplicaciones
distribuidas basadas en la Web. Los Servicios Web estn basados en estndares
abiertos de Internet, como HTTP y XML. Podemos pensar en un Servicio Web
como un componente reutilizable accesible a travs de Internet, en lugar de
estar limitado a clientes Windows en una red de rea local.
El Common Language Runtime proporciona un soporte nativo para crear y
exponer Servicios Web utilizando una abstraccin de programacin coherente y
familiar para desarrolladores tanto de Active Server Pages (ASP) como de
Visual Basic. El modelo resultante es escalable y extensible. Este modelo se
basa en estndares abiertos de Internet (HTTP, XML, SOAP y SDL) y, por
tanto, puede ser accedido e interpretado desde cualquier cliente o dispositivo
habilitado para Internet. Algunas de las clases ASP.NET ms habituales se
describen en los siguientes prrafos.
Sugerencia
Con Visual Basic .NET, el
desarrollo Web es casi tan
sencillo como el desarrollo
de aplicaciones basadas en
Windows.
La creacin de aplicaciones
Web puede llevarse a cabo
en un mismo IDE, tanto si
son aplicaciones basadas
en pginas Web o en
Servicios Web.
Espacio de nombres System.Web
En el espacio de nombres System.Web, existen servicios como la gestin de
cach, seguridad, configuracin y otros que son compartidos por los Servicios
Web y por el interfaz de usuario (IU) Web.
Introduccin a la plataforma Microsoft .NET 19
Espacio de nombres System.Web.Services
El espacio de nombres System.Web.Services gestiona los requerimientos de
los Servicios Web como los protocolos de transporte y el descubrimiento de
servicios.
Espacio de nombres System.Web.UI
El espacio de nombres System.Web.UI proporciona dos clases de controles: los
controles HTML y los controles Web. Los controles HTMLControl
proporcionan un mapeado directo de las etiquetas HTML, como <INPUT>.
Existen tambin otros controles WebControl ms ricos que permiten
estructurar controles mediante plantillas (por ejemplo, un control de rejilla).
20 Introduccin a la plataforma Microsoft .NET
Interfaz de usuario
System.Drawing System.Drawing
System.Windows.Forms System.Windows.Forms
Objetivo
Explicar cmo el .NET
Framework gestiona el
interfaz de usuario para las
aplicaciones Windows
tradicionales.
Presentacin
En esta seccin,
estudiaremos cmo .NET
gestiona el interfaz de
usuario. La clase
System.Windows.Forms
proporciona el IU de lado
cliente y System.Drawing
proporciona la siguiente
generacin de servicios
GDI.
Las aplicaciones Windows pueden ahora proporcionar interfaces de usuario
ms potentes que nunca utilizando los espacios de nombres
System.Windows.Forms y System.Drawing del .NET Framework. El aspecto
de los nuevos formularios Windows Forms de .NET resultar muy familiar para
los desarrolladores de Visual Basic.
Espacio de nombres System.Windows.Forms
Podemos utilizar las clases del espacio de nombres System.Windows.Forms
para crear el IU cliente. Esta clase nos permite implementar el IU de Windows
estndar en nuestras aplicaciones .NET. Muchas funciones a las que
anteriormente slo podan accederse mediante llamadas a la API (Application
Programming Interface) estn ahora disponibles como parte de los propios
formularios, lo cual hace el desarrollo mucho ms fcil y potente.
Espacio de nombres System.Drawing
El espacio de nombres System.Drawing proporciona acceso a la funcionalidad
de grficos bsica de GDI+. Los espacios de nombres
System.Drawing.Drawing2D, System.Drawing.Imaging y
System.Drawing.Text ofrecen funcionalidades ms avanzadas.
Introduccin a la plataforma Microsoft .NET 21
Cules son las mejoras de Visual Basic .NET?
Cules son las mejoras de Visual Basic .NET?
Principales mejoras del lenguaje
Soporte mejorado orientado a objetos
Gestin de excepciones estructurada
Acceso total al .NET Framework
Nuevas opciones de manejo de hilos
Recolector de basura
Desarrollo Web mejorado
Creacin de Formularios Web tan fcilmente como
formularios Windows
Crear servicios Web rpidamente
Objetivo
Presentar algunas de las
principales mejoras de
Visual Basic .NET.
Presentacin
Visual Basic .NET
proporciona importantes
mejoras del lenguaje, un
acceso total al .NET
Framework, y un desarrollo
Web mejorado.
Visual Basic .NET proporciona importantes mejoras del lenguaje, un acceso
total al .NET Framework y un desarrollo Web mejorado.
Importantes mejoras de lenguaje
Sugerencia
Explique cada uno de los
puntos de la diapositiva y
sus ventajas para los
desarrolladores.
En Visual Basic .NET, Visual Basic ha experimentado algunos cambios
importantes para permitir a los desarrolladores de Visual Basic crear
aplicaciones empresariales potentes, robustas y escalables.
Soporte orientado a objetos mejorado
Permite a los desarrolladores de Visual Basic .NET utilizar herencia de
clases, constructores, destructores, sobrecarga, interfaces y polimorfismo.
Esto otorga a Visual Basic .NET tanto poder orientado a objetos como
cualquier otro lenguaje .NET, como C#o Visual C++con extensiones
gestionadas.
Gestin de excepciones estructurada
Simplifica el control de excepciones y permite utilizar potentes
caractersticas como las excepciones anidadas. Esto mejora enormemente el
anterior gestor de errores de Visual Basic.
22 Introduccin a la plataforma Microsoft .NET
Acceso total al .NET Framework
Los desarrolladores de Visual Basic .NET tienen acceso total al .NET
Framework, incluyendo toda la biblioteca de clases de .NET Framework.
Nuevas opciones de manejo de hilos
Permite crear aplicaciones que utilizan capacidades con mltiples hilos de
ejecucin. Por primera vez, los desarrolladores de Visual Basic podrn crear
aplicaciones capaces de competir con aplicaciones basadas en Visual C++
en esta rea.
Recolector de basura
Garantiza que las aplicaciones creadas en Visual Basic .NET no acceden a
posiciones de memoria sin referencia. Este proceso en segundo plano aborda
aspectos relacionados con la gestin de memoria, como posiciones de
memoria vacas y referencias circulares que existan en versiones anteriores
de Visual Basic y en otros lenguajes.
Desarrollo Web mejorado
Visual Basic .NET permite a los desarrolladores crear rpidamente potentes
aplicaciones Web.
Crear Formularios Web fcilmente
Es tan fcil como crear formularios Windows utilizando la tcnica de
escribir cdigo tras el evento de un control. Los desarrolladores ya no
necesitan utilizar un entorno de desarrollo integrado (IDE, Integrated
Development Environment) para el desarrollo de pginas Web (como
Microsoft Visual InterDev) y otro entorno para el desarrollo de
componentes. Ahora, todos los aspectos de una aplicacin Web se crean
simplemente en un nico entorno para los desarrolladores de Visual Basic y
de un modo fcil de entender.
Crear Servicios Web rpidamente
Es posible crear Servicios Web rpidamente de modo similar a cmo se
creaban componentes en las versiones anteriores de Visual Basic. Los
Servicios Web son una potente tecnologa que le permite acceder a sus
componentes (o a los componentes de otras personas) a travs de Internet
mediante HTTP. Cualquier desarrollador de Visual Basic que haya creado
componentes podr realizar fcilmente la transicin a los Servicios Web.
Introduccin a la plataforma Microsoft .NET 23
Descripcin de los espacios de nombres
Descripcin de los espacios de nombres
Espacios de nombres
Espacios de nombres utilizados en mdulos
obligatorios
Espacios de nombres utilizados en mdulos
opcionales
Objetivo
Describir los espacios de
nombres en el .NET
Framework.
Presentacin
En esta seccin,
estudiaremos los espacios
de nombres del .NET
Framework.
En esta seccin, estudiaremos los espacios de nombres del .NET Framework.
Tambin veremos qu espacios de nombres se ensean en este curso.
Esta seccin incluye los siguientes temas:
Espacios de nombres
Espacios de nombres utilizados en mdulos obligatorios
Espacios de nombres utilizados en mdulos opcionales
24 Introduccin a la plataforma Microsoft .NET
Espacios de nombres
Espacios de nombres
System System
Globalization Globalization
Diagnostics Diagnostics
Configuration Configuration
Collections Collections
Resources Resources
Reflection Reflection
Net Net
IO IO
Threading Threading
Text Text
Security Security Runtime Runtime
ServiceProcess ServiceProcess
.Serialization .Serialization
.Remoting .Remoting
.InteropServices .InteropServices
Objetivo
Entender el modo en que
los espacios de nombres
proporcionan una jerarqua
de tipos y funcionalidades
fciles de utilizar.
Presentacin
El .NET Framework incluye
un gran conjunto de
ensamblados de bibliotecas
de clases, que contienen
cientos de tipos. Estos
ensamblados proporcionan
acceso a funcionalidades
del sistema en nuestro
proceso de desarrollo.
El .NET Framework incluye un gran conjunto de ensamblados que forman las
bibliotecas de clases, que conjuntamente contienen cientos de tipos. Estos
ensamblados proporcionan acceso a funcionalidades del sistema en nuestro
proceso de desarrollo.
Objetivo de los espacios de nombres
Debido a que la biblioteca de clases del .NET Framework incluye definiciones
para nomerosos tipos, la biblioteca se organiza en un espacio de nombres de
estructura jerrquica.
Los espacios de nombres utilizan un esquema nombres con una sintaxis basada
en un punto para agrupar lgicamente clases relacionadas de modo que puedan
buscarse y referenciarse fcilmente. Por ejemplo, el espacio de nombres
System.Data contiene clases que constituyen la arquitectura de ADO.NET. El
espacio de nombres System.Xml es el espacio de nombres global para todas las
clases XML que proporcionan soporte basado en estndares para procesar
XML.
El espacio de nombres System
El espacio de nombres System es el espacio de nombres raz para los tipos en el
.NET Framework. El espacio de nombres System contiene el tipo base Object,
desde el que se derivan otros tipos.
El espacio de nombres System tambin contiene tipos para la gestin de
excepciones, recolector de basura, E/S de consola, varios tipos de herramientas,
tipos de datos de formato, generadores de nmeros aleatorios y funciones
matemticas.
Introduccin a la plataforma Microsoft .NET 25
Espacios de nombres utilizados en mdulos obligatorios
Espacios de nombres utilizados en mdulos
obligatorios
Mdulo 2
System.Console
Mdulo 3
System.Windows.Forms
System.Drawing
Mdulo 4
System.Reflection
Mdulo 7
System.Text
System.Collections
Mdulo10
System.IO
Mdulo11
System.Net
System.Net.Sockets
Mdulo12
System.Runtime.Serialization
Mdulo13
System.Runtime.Remoting.Channels
System.Web.Services
Objetivo
Explicar qu espacios de
nombres se ensean en
este curso, y qu espacios
de nombres no.
Presentacin
Este curso cubre muchos de
los espacios de nombres
System. Dos espacios de
nombres que no se cubren
son los espacios de
nombres System.Datay
System.Security.
Este curso cubre muchos de los espacios de nombres del Microsoft .NET
Framework.
El Mdulo 2 explica el espacio de nombres System.Console para enviar salida
de impresin a la consola. El Mdulo 3 explica los espacios de nombres
System.Windows.Forms y System.Drawing para generar un formulario que
contenga botones para interactuar con el usuario.
El Mdulo 4 explica el espacio de nombres System.Reflection para almacenar
informacin relativa a versiones y archivos de claves en un ensamblado. El
Mdulo 7 explica el espacio de nombres System.Text para la gestin avanzada
de cadenas y el System.Collections para mantener colecciones de datos.
El Mdulo 10 explica el espacio de nombres System.IO para leer y escribir
archivos. El Mdulo 11 explica los espacios de nombres System.Net y
System.Net.Sockets para la transmisin de datos a travs de la red.
El Mdulo 12 explica el espacio de nombres System.Runtime.Serialization
para la persistencia de objetos en el almacenamiento. El Mdulo 13 explica los
espacios de nombres System.Runtime.Remoting.Channels y
System.Web.Services para la invocacin de objetos remotos, y para la creacin
de servicios Web XML.
26 Introduccin a la plataforma Microsoft .NET
Espacios de nombres utilizados en mdulos opcionales
Espacios de nombres utilizados en mdulos
opcionales
Mdulo 14
System.Threading
Mdulo 16
System.Data
Mdulo 17
System.Reflection
Objetivo
Completar la informacin
sobre los espacios de
nombres presentados en la
seccin anterior.
Presentacin
Estos son algunos espacios
de nombres que se cubren
en mdulos opcionales de
este curso.
Los Mdulos 14 a 17 son opcionales.
El Mdulo 14 explica el espacio de nombres System.Threading para permitir
la programacin multi-hilo. El Mdulo 16 explica el espacio de nombres
System.Data, que proporciona los objetos y tipos bsicos para el modelo de
programacin ADO.NET. ADO.NET tambin proporciona soporte de XML en
el espacio de nombres System.Xml. Finalmente, el Mdulo 17 explica el
espacio de nombres System.Reflection, que contiene clases que pueden
utilizarse para examinar metadatos.
Espacios de nombres no cubiertos
Este curso no cubre el espacio de nombres System.Security.
ndice
Descripcin 1
Leccin: introduccin al .NET Framework 2
Leccin: descripcin de ASP.NET 14
Leccin: descripcin de la aplicacin del laboratorio 20
Leccin: Recursos 26
Descripcin del Microsoft .NET
Framework
Descripcin del Microsoft .NET Framework 1
Descripcin
Introduccin al .NET Framework
Descripcin de ASP.NET
Descripcin de la aplicacin del laboratorio
Recursos
*****************************use******************************
El Microsoft.NET Framework representa un cambio importante en el modo de
generar y ejecutar las aplicaciones Web. Microsoft ASP.NET es una de las
mltiples tecnologas que forman parte del .NET Framework. En este mdulo,
estudiaremos el .NET Framework y ASP.NET. Tendremos la oportunidad de
examinar la aplicacin Web que generaremos en los laboratorios.
En este mdulo, aprenderemos a:
Explicar las ventajas de utilizar el .NET Framework.
Entender las principales funcionalidades y la utilidad de ASP.NET en el
desarrollo de aplicaciones Web.
Entender las funcionalidades bsicas del sitio Web que generaremos en los
laboratorios.
Introduccin
Objetivos
2 Descripcin del Microsoft .NET Framework
Leccin: Introduccin al .NET Framework
Ques el .NET Framework?
Quproblemas soluciona .NET?
Componentes del .NET Framework
Beneficios de usar el .NET Framework
Visual Studio .NET: la herramienta parael desarrollo .NET
*****************************use******************************
En esta leccin, estudiaremos el .NET Framework. Veremos algunos de los
problemas a los que se enfrentan los desarrolladores cuando generan
aplicaciones Web y cmo el .NET Framework soluciona estos problemas.
Tambin incluye una introduccin a Microsoft Visual Studio .NET, la
herramienta de desarrollo que utilizaremos para desarrollar aplicaciones Web
con el .NET Framework.
En esta leccin, aprenderemos a:
Diferenciar entre Microsoft .NET y el .NET Framework.
Enumerar las ventajas de utilizar .NET, desde la perspectiva de los
problemas que .NET soluciona.
Identificar las caractersticas de Visual Studio .NET.
Introduccin
Objetivos de la leccin
Descripcin del Microsoft .NET Framework 3
Qu es el .NET Framework?
Herramientas del
desarrollador
Clientes
Experiencias
del usuario
Aplicaciones
WebASP.NET
Servicios
WebXML
Bases de
datos
.NET
Framework
*****************************use******************************
.NET es el modelo de desarrollo de Microsoft que hace que el software sea
independiente de la plataforma y de los dispositivos, y hace que los datos estn
disponibles a travs de Internet. El .NET Framework es la infraestructura bsica
subyacente de .NET.
.NET ha sido implementado desde el principio pensando en una arquitectura
abierta. .NET es una plataforma que puede utilizarse para generar y ejecutar la
siguiente generacin de aplicaciones Windows y aplicaciones Web. El
objetivo de la plataforma .NET de Microsoft es simplificar el desarrollo Web.
Est formada por las siguientes tecnologas principales:
.NET Framework
Windows Server System
Servicios building block fundamentales
Visual Studio .NET
La plataforma .NET abarca a clientes, servidores y servicios; est formada por:
Un modelo de programacin que permite a los desarrolladores generar
aplicaciones y servicios Web XML (Extensible Markup Language).
Un conjunto de servicios building block fundamentales, que son un conjunto
de servicios Web XML centrados en el usuario que trasladan el control de
datos de usuario desde las aplicaciones hasta los usuarios. Por ejemplo,
Microsoft Passport es un componente principal de la iniciativa .NET que
facilita la integracin de diversas aplicaciones.
Introduccin
Qu es la plataforma
.NET?
4 Descripcin del Microsoft .NET Framework
Un conjunto de servidores empresariales .NET, Windows Server System,
incluyendo Windows Server 2003, Microsoft SQL Server
y Microsoft
BizTalk Server, que integran, ejecutan, operan y gestionan aplicaciones y
servicios Web XML.
Software cliente, como Windows XP y Windows CE, que permiten a los
desarrolladores ofrecer una completa experiencia de usuario a travs de una
familia de dispositivos.
Herramientas, como Visual Studio .NET, que pueden utilizarse para
desarrollar servicios Web XML, aplicaciones Windows y aplicaciones Web
para obtener una rica experiencia de usuario.
El .NET Framework proporciona la base sobre la que se desarrollan y ejecutan
las aplicaciones y los servicios Web XML. La naturaleza unificada del .NET
Framework significa que todas las aplicaciones, tanto si son aplicaciones
Windows, aplicaciones Web o servicios Web XML, se desarrollan utilizando un
conjunto de herramientas y cdigo comunes, y se integran fcilmente entre s.
El .NET Framework est formado por:
El Common Language Runtime (de ahora en adelante, CLR). El CLR
gestiona los servicios en tiempo de ejecucin, incluyendo la integracin de
lenguajes, la seguridad y la gestin de memoria. Durante el desarrollo, el
CLR proporciona funcionalidades necesarias para simplificar el desarrollo.
Biblioteca de clases. Las bibliotecas de clases proporcionan cdigo
reutilizable para las tareas ms habituales, incluyendo el acceso a datos, el
desarrollo de servicios Web XML, Web Forms y Windows Forms.
Qu es el .NET
Framework?
Descripcin del Microsoft .NET Framework 5
Qu problemas soluciona .NET?
Incluso con Internet, la mayora deaplicaciones
y dispositivos tienen problemas
comunicndose entre s
Los programadores terminan por escribir
infraestructura en lugar de aplicaciones
Los programadores han tenido quelimitar su
alcance o aprender continuamentenuevos
lenguajes
*****************************use******************************
El .NET Framework fue desarrollado para superar varias limitaciones con las
que los desarrolladores se encontraban al generar aplicaciones Web, y utiliza la
Internet como medio para solventar estas limitaciones.
Incluso con la llegada de una red global y fcilmente accesible para compartir
informacin (Internet), algunas aplicaciones funcionan en ms de un tipo de
cliente o tienen la capacidad de interactuar transparentemente con otras
aplicaciones. Esta limitacin lleva a dos importantes problemas con los que los
desarrolladores deben enfrentarse:
Generalmente, los desarrolladores deben limitar su mbito.
Los desarrolladores emplean la mayor parte de su tiempo en escribir de
nuevo las aplicaciones para que funcionen en cada tipo de plataforma y
cliente, en lugar de emplear su tiempo en disear nuevas aplicaciones.
El .NET Framework soluciona los dos problemas anteriores mediante el CLR,
que es independiente del lenguaje y de la plataforma, y con el uso del estndar
de mercado XML. La independencia del lenguaje de .NET permite a los
desarrolladores generar una aplicacin en cualquier lenguaje basado en .NET y
saber que la aplicacin Web funcionar en cualquier cliente que soporte .NET.
El CLR tambin controla gran parte de la infraestructura de la aplicacin, de
modo que los desarrolladores pueden concentrarse en la lgica especfica de la
aplicacin.
Los Servicios Web XML utilizan XML para enviar datos, garantizando as que
cualquier cliente con capacidad XML puede recibir esos datos. Como XML es
un estndar abierto, la mayora de clientes modernos, como los sistemas
Introduccin
Aspectos previos a .NET
6 Descripcin del Microsoft .NET Framework
operativos de PCs, telfonos mviles, asistentes digitales personales (PDAs) y
consolas de juegos, pueden aceptar datos XML.
Descripcin del Microsoft .NET Framework 7
Componentes del .NET Framework
Win32 Win32
Message Message
Queuing Queuing
COM+ COM+
( (Transacciones, Particiones, Transacciones, Particiones,
Agrupaci Agrupaci ndeobjetos ndeobjetos) )
IIS IIS WMI WMI
CommonLanguageRuntime CommonLanguageRuntime
Biblioteca Bibliotecade declases clasesde.NET Framework de.NET Framework
ADO.NET y XML ADO.NET y XML
Servicios ServiciosWebXML WebXML Interfaz Interfazde deusuario usuario
Visual
Basic
C++ C#
ASP.NET ASP.NET
Perl Python
*****************************use******************************
El .NET Framework proporciona el marco en tiempo de compilacin y en
tiempo de ejecucin necesario para generar y ejecutar aplicaciones basadas en
.NET.
El .NET Framework est formado por distintos componentes que ayudan a
generar y ejecutar aplicaciones basadas en .NET:
Substrato de la plataforma
El .NET Framework debe ejecutarse sobre un sistema operativo.
Actualmente, puede ejecutarse en sistemas operativos Microsoft Win32,
como Windows 2000, Windows 2003, Windows XP y Windows 98.
Adems, el .NET Framework se extiende para su ejecucin en otras
plataformas, como Windows CE, a travs del .NET Compact Framework.
Servicios de aplicaciones
Cuando se ejecuta en Windows 2000 o Windows 2003, el desarrollador
tiene disponibles servicios de aplicaciones como los Servicios de
Componentes, Colas de Mensajes, Internet Information Services (IIS) y
Windows Management Instrumentation (WMI). El .NET Framework
expone los servicios de aplicaciones a travs de clases en la biblioteca de
clases del .NET Framework.
Biblioteca de clases del .NET Framework
La biblioteca de clases del .NET Framework expone caractersticas del CLR
y simplifica el desarrollo de aplicaciones basadas en .NET. Adems, los
desarrolladores pueden extender las clases creando sus propias bibliotecas
de clases.
Introduccin
El .NET Framework
8 Descripcin del Microsoft .NET Framework
La biblioteca de clases del .NET Framework implementa el .NET
Framework. Todas las aplicaciones (Web, Windows y Servicios Web XML)
acceden a las mismas bibliotecas de clases del .NET Framework, que se
almacenan en espacios de nombres. Todos los lenguajes basados en .NET
tambin acceden a las mismas bibliotecas.
Common Language Runtime
El CLR simplifica el desarrollo de aplicaciones, proporciona un entorno de
ejecucin robusto y seguro, soporta mltiples lenguajes y simplifica la
implantacin y administracin de las aplicaciones.
El entorno del CLR tambin se denomina entorno gestionado, en el que se
ofrecen automticamente servicios comunes, como la recoleccin de basura
y la seguridad.
Microsoft ADO.NET
ADO.NET es la siguiente generacin de la tecnologa ActiveX Data
Objects (ADO) de Microsoft. ADO.NET ofrece un soporte mejorado del
modelo de programacin desconectado. ADO.NET tambin proporciona un
amplio soporte de XML.
Para aprender ms sobre ADO.NET, leer los Mdulos 9, 10 y 11.
ASP.NET
ASP.NET es un marco de programacin creado sobre el CLR. Puede
utilizarse en un servidor para crear potentes aplicaciones Web. ASP.NET
Web Forms proporcionan una forma fcil y potente de generar interfaces de
usuario (IUs) Web dinmicos.
Servicios Web XML
Los Servicios Web XML son componentes Web programables que pueden
compartirse entre aplicaciones en Internet o en intranets. El .NET
Framework proporciona herramientas y clases para crear, probar y distribuir
servicios Web XML.
Para saber ms sobre los servicios Web XML, ver el Mdulo 13.
Interfaces de usuario
El .NET Framework soporta tres tipos de IUs:
Web Forms, que funcionan a travs de ASP.NET y HTTP (Hypertext
Transfer Protocol)
Windows Forms, que se ejecutan en equipos cliente Win32
La consola de la lnea de comandos
Lenguajes
Cualquier lenguaje que cumpla con la Especificacin de Lenguaje Comn
(Common Language Specification - CLS) puede ejecutarse en el CLR. En el
.NET Framework, Microsoft proporciona soporte para Microsoft Visual
Basic .NET, Microsoft Visual C++ .NET, C#, y Microsoft J Script .NET.
Terceras partes pueden proporcionar lenguajes adicionales.
Para ms informacin sobre los lenguajes basados en .NET, consultar
Nota
Nota
Nota
Descripcin del Microsoft .NET Framework 9
el Mdulo Uso de lenguajes basados en Microsoft .NET.
10 Descripcin del Microsoft .NET Framework
Ventajas de usar el .NET Framework
Basado en estndares y prcticas Web
La funcionalidadde las clases .NET estdisponiblede
forma universal
El cdigo estorganizado en clases y espacios de
nombres jerrquicos
Independiente del lenguaje
Windows Windows
API API
ASP ASP
.NET .NET
Framework Framework
1980s 1990s 2000s
Visual Basic Visual Basic
MFC/ATL MFC/ATL
*****************************use******************************
En los primeros aos del desarrollo de aplicaciones Windows, todas las
aplicaciones estaban escritas sobre la API (Interfaz de Programacin de
Aplicaciones) de Windows en C o C++.
Con la llegada de Visual Basic, y posteriormente de Internet, los
desarrolladores deban especializarse en el desarrollo de aplicaciones C y C++
(MFC/ATL), aplicaciones Visual Basic, o aplicaciones Active Server Pages
(ASP). Con el .NET Framework, podemos utilizar nuestros conocimientos para
desarrollar cualquier tipo de aplicacin.
Las ventajas de utilizar el .NET Framework para desarrollar aplicaciones
incluyen:
Basado en estndares y prcticas Web
El .NET Framework soporta completamente las tecnologas existentes de
Internet, incluyendo HTML (Hypertext Markup Language), HTTP, XML,
SOAP (Simple Object Access Protocol), XSLT (Extensible Stylesheet
Language Transformation), XPath (XML Path Language) y otros estndares
Web.
Diseado utilizando modelos de aplicacin unificados
La funcionalidad de una clase .NET est disponible desde cualquier
lenguaje compatible con .NET o modelo de programacin. Por tanto, la
misma pieza de cdigo puede ser utilizada por aplicaciones Windows,
aplicaciones Web y Servicios Web XML.
Introduccin
Ventajas
Descripcin del Microsoft .NET Framework 11
Fcil de utilizar para los desarrolladores
En el .NET Framework, el cdigo est organizado en espacios de nombres
jerrquicos y en clases. El .NET Framework proporciona un sistema de tipos
comunes, conocido tambin como sistema de tipos unificados, que puede
ser utilizado por cualquier leguaje compatible con .NET. En el sistema de
tipos unificados, todos los elementos del lenguaje son objetos. Estos objetos
pueden ser utilizados por cualquier aplicacin .NET escrita en cualquier
lenguaje basado en .NET.
Clases extensibles
La jerarqua del .NET Framework no queda oculta al desarrollador.
Podemos acceder y extender las clases .NET (a menos que estn protegidas)
mediante la herencia. Tambin podemos implementar la herencia entre
mltiples lenguajes.
12 Descripcin del Microsoft .NET Framework
Visual Studio .NET: la herramienta para el desarrollo .NET
Visual Studio .NET
Herramientas
Windows Forms
Herramientas
WebForms
Proceso
deerrores
Acceso
adatos
Mltiples
Lenguajes
Herramientas
Servicios Web
Desarrollar Depurar Implantar Disear
*****************************use******************************
Visual Studio .NET constituye el ncleo del desarrollo .NET. Es un completo
entorno de desarrollo en el que podemos disear, desarrollar, depurar e
implementar nuestras aplicaciones .NET y nuestros Servicios Web XML.
Visual Studio .NET, como herramienta de desarrollo, proporciona las
caractersticas siguientes:
Soporta varios lenguajes de desarrollo.
Para ms informacin sobre los lenguajes disponibles basados en
.NET, leer el Mdulo Uso de lenguajes basados en Microsoft .NET.
Herramientas para generar aplicaciones Web, aplicaciones Windows y
servicios Web XML.
Herramientas de acceso a datos.
Procesamiento completo de errores, incluyendo depuracin local,
depuracin remota y uso de trazas.
Introduccin
Caractersticas de
Visual Studio .NET
Nota
Descripcin del Microsoft .NET Framework 13
En este curso, utilizaremos Visual Studio .NET. En esta prctica, Visual Studio
.NET se mostrar en la parte superior del men Inicio, para poder acceder a l
fcilmente, y se abrir Visual Studio .NET.
Mostrar un programa en la parte superior del men Inicio
En el men Inicio, hacer clic en Todos los programas, seleccionar
Microsoft Visual Studio .NET 2003, hacer clic con el botn derecho en
Microsoft Visual Studio .NET 2003 y, a continuacin, clic en Fijar al
men Inicio.
El icono y el nombre de Visual Studio .NET aparecen cerca del lado
izquierdo superior del men Inicio.
Iniciar y cerrar Visual Studio .NET
1. Hacer clic en el botn Inicio, en la lista del lado superior izquierdo del
men Inicio, hacer clic en Microsoft Visual Studio .NET 2003.
Visual Studio .NET se abre y muestra la pgina de inicio.
Estudiaremos ms detalles del IDE de Visual Studio .NET en el
Mdulo Uso de Microsoft Visual Studio .NET.
2. En el men Archivo, hacer clic en Salir para cerrar Visual Studio .NET.
Prctica opcional
Nota
14 Descripcin del Microsoft .NET Framework
Leccin: descripcin de ASP.NET
Ques ASP.NET?
Aplicacin Web ASP.NET
Multimedia: modelo de ejecucin ASP.NET
*****************************use******************************
ASP.NET es un marco de programacin basado en el .NET Framework que se
utiliza para generar aplicaciones Web. Los formularios Web Forms ASP.NET,
que forman parte de una aplicacin Web ASP.NET, proporcionan un modo
fcil de generar sitios Web dinmicos. ASP.NET tambin incluye la tecnologa
necesaria para generar servicios Web XML, que proporcionan los bloques
bsicos para construir aplicaciones distribuidas basadas en la Web.
En esta leccin, aprenderemos a:
Explicar la diferencia entre Web Forms y aplicaciones Web ASP.NET.
Describir las partes de una aplicacin Web ASP.NET.
Introduccin
Objetivos de la leccin
Descripcin del Microsoft .NET Framework 15
Qu es ASP.NET?
El sucesor y evolucin deActive Server Pages, ms
flexible
Pginas Webdinmicas que pueden acceder a
recursos del servidor
Procesamiento de formularios WebFormsen el lado
servidor
Los Servicios WebXML permiten crear aplicaciones
Webdistribuidas
Independiente del navegador
Independiente del lenguaje
*****************************use***********
Durante muchos aos, los desarrolladores han estado utilizando la tecnologa
ASP para generar pginas Web dinmicas. De modo similar a ASP, ASP.NET
se ejecuta en el servidor Web y proporciona una forma de desarrollar sitios
Web dinmicos, personalizados y de rico contenido. Adems, ASP.NET ofrece
numerosas mejoras respecto a ASP.
Desarrollar aplicaciones Web ASP.NET sobre el .NET Framework es similar a
desarrollar aplicaciones Windows. El componente fundamental de ASP.NET es
el formulario Web Form. Un formulario Web Form es la pgina Web que los
usuarios visualizan en un navegador. Una aplicacin Web ASP.NET consta de
uno o ms formularios Web Form. Un Web Form es una pgina dinmica que
puede acceder a recursos del servidor.
Por ejemplo, una pgina Web tradicional puede ejecutar scripts en el cliente
para realizar tareas bsicas. En cambio, un formulario Web Form ASP.NET
tambin puede ejecutar cdigo en el lado servidor para acceder a una base de
datos, generar formularios Web Forms adicionales, o aprovechar la seguridad
incorporada en el servidor.
Adems, como un formulario Web Form ASP.NET no depende de utilizar
scripts en el cliente, no depende del tipo de navegador del cliente o del sistema
operativo. Esta independencia permite desarrollar un nico formulario Web
Form que puede ser visualizado prcticamente en todos los dispositivos que
dispongan de acceso a Internet y de un navegador Web.
Debido a que ASP.NET forma parte del .NET Framework, podemos desarrollar
aplicaciones Web ASP.NET en cualquier lenguaje basado en .NET.
Introduccin
Qu es ASP.NET?
Servicios Web XML
16 Descripcin del Microsoft .NET Framework
La tecnologa ASP.NET tambin permite la creacin de servicios Web XML.
Los servicios Web XML son aplicaciones distribuidas que utilizan XML para
transferir informacin entre clientes, aplicaciones y otros servicios Web XML.
Aprenderemos cmo consumir y crear servicios Web XML en el
Mdulo Consumir y crear Servicios Web XML.
Nota
Descripcin del Microsoft .NET Framework 17
Aplicacin Web ASP.NET
Datos
XML
Basede
datos
Internet
Internet
Page1.
aspx
Page2.
aspx
Servicios
Web
Servicios
Web
Componentes
Componentes
Web
Forms
Pginas
cdigo
trasero
global.
asax
Web.
config
machine.
config
ServidorWebASP.NET
C
a
c
h
d
e
S
a
l
i
d
a
Clientes
*****************************
Una aplicacin Web ASP.NET contiene distintas partes y componentes. Crear
aplicaciones Web ASP.NET implica utilizar y trabajar con todos ellos.
En este tema, estudiaremos qu constituye una aplicacin ASP.NET.
Las partes de una aplicacin Web ASP.NET incluyen:
Formularios Web Forms o pginas .aspx
Los formularios Web Forms y las pginas .aspx proporcionan la interfaz de
usuario para la aplicacin Web.
Pginas con cdigo trasero
Las pginas con cdigo trasero estn asociadas a los formularios Web
Forms y contienen el cdigo del servidor para el formulario Web Form.
Archivos de configuracin
Los archivos de configuracin son archivos XML que definen la
configuracin predeterminada para la aplicacin Web y para el servidor
Web. Cada aplicacin Web tiene un archivo de configuracin Web.config.
Adems, cada servidor Web tiene un archivo machine.config.
Archivo Global.asax
Los archivos Global.asax contienen el cdigo necesario para responder a los
eventos a nivel de aplicacin provocados por ASP.NET.
Introduccin
Partes de una aplicacin
Web ASP.NET
18 Descripcin del Microsoft .NET Framework
Enlaces a servicios Web XML
Los enlaces a servicios Web XML permiten a la aplicacin Web enviar y
recibir datos de un servicio Web XML.
Conectividad a bases de datos
La conectividad a bases de datos permite a la aplicacin Web transferir
datos desde y hacia fuentes de base de datos.
Cach
El uso de cach permite a la aplicacin Web devolver ms rpidamente
formularios Web Forms y datos tras la primera peticin.
Descripcin del Microsoft .NET Framework 19
Multimedia: modelo de ejecucin de ASP.NET
***************************** use******************************
En esta animacin, observaremos el funcionamiento de ASP.NET para enviar
informacin a un cliente que ha realizado una peticin. Para empezar la
animacin abra el fichero media01.swf.
Cuando el cliente solicita una pgina Web por primera vez, se genera el
siguiente conjunto de eventos:
1. El navegador cliente enva una solicitud GET HTTP al servidor.
2. El parseador ASP.NET interpreta el cdigo fuente.
3. Si el cdigo no se ha compilado todava en una biblioteca de enlace
dinmico (DLL), ASP.NET invoca el compilador.
4. El CLR carga y ejecuta el cdigo Microsoft intermediate language (MSIL).
Cuando el usuario invoca la misma pgina Web por segunda vez, se genera el
siguiente conjunto de eventos:
1. El navegador cliente enva una solicitud GET HTTP al servidor.
2. El CLR carga y ejecuta inmediatamente el cdigo MSIL que ya se ha
compilado durante el primer intento de acceso del usuario.
Introduccin
Primera solicitud
Segunda solicitud
20 Descripcin del Microsoft .NET Framework
Leccin: descripcin de la aplicacin del laboratorio
Instalacin de la aplicacin del laboratorio
Demostracin: la solucin del laboratorio
*****************************use******************************
Esta leccin presenta una introduccin a la aplicacin de laboratorio que
generaremos durante el resto del curso. Tambin tendremos la oportunidad de
explorar una versin completa de la aplicacin de laboratorio y entender parte
de su funcionalidad.
En esta leccin, aprenderemos a:
Conocer la funcionalidad bsica y las caractersticas de la aplicacin de
laboratorio que generaremos en el resto de laboratorios de este curso.
Enumerar el software requerido para ejecutar los laboratorios de este curso.
Introduccin
Objetivo de la leccin
Descripcin del Microsoft .NET Framework 21
Instalacin de la aplicacin de laboratorio
3proyectos
Aplicacin Web
Biblioteca de Clases
Servicio Web XML
12formularios WebForms
3bases de datos
Doctors
Dentists
Coho
*****************************use******************************
En los laboratorios de este curso, generaremos una aplicacin Web ASP.NET
completa que simula un sitio Web interno para la compaa ficticia Coho
Winery. El sitio Web ficticio, que crearemos en nuestro equipo, proporciona
informacin a empleados sobre sus opciones de beneficios.
La aplicacin Web Benefits que desarrollaremos incluye lo siguiente:
Tres proyectos, incluyendo una aplicacin Web, una biblioteca de clases y
un servicio Web XML.
12 formularios Web Forms utilizados para mostrar la informacin de
beneficios de los empleados.
Tres bases de datos SQL Server.
En este curso, podremos escoger entre desarrollar soluciones de
laboratorio utilizando Visual Basic .NET o C#.
Introduccin
Detalles
Nota
22 Descripcin del Microsoft .NET Framework
Los componentes en Visual Basic .NET y C#de la aplicacin Web Benefits se
enumeran en la siguiente tabla.
Pgina Visual
Basic .NET Pgina C# Descripcin Laboratorios
default.aspx
default.aspx.vb
default.aspx
default.aspx.cs
La pgina de inicio. Invoca el componente
BenefitsList y lista las opciones de beneficios en un
control CheckBoxList.
4, 5, 14
dental.aspx
dental.aspx.vb
dental.aspx
dental.aspx.cs
Invoca el servicio Web XML para obtener un listado
de dentistas.
13
doctors.aspx
doctors.aspx.vb
doctors.aspx
doctors.aspx.cs
Lista los principales mdicos de la base de datos
doctors de SQL Server
9, 10, 11, 15
dsDoctors.vb
dsDoctors.xsd
dsDoctors.cs
dsDoctors.xsd
Contiene el esquema del DataSet utilizado en el
formulario Web Form doctors.aspx.
9
growth.xml
lgcap.xml
midcap.xml
smcap.xml
growth.xml
lgcap.xml
midcap.xml
smcap.xml
Archivos XML con la informacin de prospectos. 12
header.ascx header.ascx Control de usuario que es la cabecera de cada pgina. 4, 5, 15
life.aspx
life.aspx.vb
life.aspx
life.aspx.cs
Formulario de entrada de datos sobre seguros de vida.
Utiliza controles de validacin.
4, 7, 14
login.aspx
login.aspx.vb
login.aspx
login.aspx.cs
Pgina de inicio de sesin para el sitio Web. 17
medical.aspx
medical.aspx.vb
medical.aspx
medical.aspx.cs
Formulario de entrada de datos mdicos. La pgina
utilizada para seleccionar un mdico de asistencia
primaria de la pgina doctors.aspx.
8, 15
mutual_funds.xml mutual_funds.xml Archivo XML que contiene la lista de los fondos
habituales de inversin.
12
namedate.ascx
namedate.ascx.vb
namedate.ascx
namedate.ascx.cs
Control de usuario utilizado para recoger la
informacin del nombre y fecha de nacimiento. Se
utiliza en la pgina medical.aspx.
8, 14
nestedData.aspx
nestedData.aspx.vb
nestedData.aspx
nestedData.aspx.cs
Permite crear un archivo XML anidado desde varias
tablas que componen la base de datos doctors.
12
prospectus.aspx
prospectus.aspx.vb
prospectus.apsx
prospectus.aspx.cs
Muestra un prospecto de los planes de pensiones de un
determinado archivo XML utilizando un archivo de
hojas de estilo.
12
prospectus_style.xsl prospectus_style.xsl Archivo de hojas de estilo para mostrar los prospectos. 12
register.aspx
register.aspx.vb
register.aspx
register.aspx.cs
Agrega nuevos usuarios a la base de datos de Coho
Winery.
16
retirement.aspx
retirement.aspx.vb
retirement.aspx
retirement.aspx.cs
Muestra los datos XML del archivomutual_funds.xml
en formato HTML.
12, 14
securitytest.aspx
securitytest.aspx.vb
securitytest.aspx
securitytest.aspx.cs
Muestra la identidad y el mtodo de autenticacin
utilizado para validar al usuario actual, y verificar el
sistema de seguridad.
16
Descripcin del Microsoft .NET Framework 23
(continuacin)
Pgina Visual
Basic .NET Pgina C# Descripcin Laboratorios
signout.aspx
signout.aspx.vb
signout.aspx
signout.aspx.cs
Permite al usuario cerrar sesin y salir del sistema. 16
Web.config Web.config Archivo de configuracin. 14, 15, 16
Proyecto
componente
BenefitsListVB
Proyecto
componente
BenefitsListCS
Este proyecto contiene un componente Visual Basic
.NET o C#denominado Class1.vb o Class1.cs que
devuelve un listado de las opciones de beneficios.
3
Proyecto servicio
Web DentalService
Proyecto servicio
Web DentalService
Este proyecto contiene un servicio Web XML
denominado DentalService.asmx
(DentalService.asmx.vb y DentalService.asmx.cs).
Este servicio Web XML lee informacin de la base de
datos dentists de SQL Server y devuelve la
informacin en un DataSet.
13
24 Descripcin del Microsoft .NET Framework
Demostracin: solucin del laboratorio
Medical
Medical.aspx
Medical
Medical.aspx
Pginainicio
Benefits
Default.aspx
Pginainicio
Benefits
Default.aspx
LifeInsurance
Life.aspx
LifeInsurance
Life.aspx
Retirement
Retirement.aspx
Retirement
Retirement.aspx
Dentists
Dental.aspx
Dentists
Dental.aspx
Dentists
Doctors
Doctors.aspx
Doctors
Doctors.aspx
Doctors
Pginainicio
Login.aspx
Pginainicio
Login.aspx
Registro
Register.aspx
Registro
Register.aspx
Coho
Winery
Prospectus
Prospectus.aspx
Prospectus
Prospectus.aspx
Servicio
WebXML
dentalService1.asmx
Servicio
WebXML
dentalService1.asmx
Encabezado
pgina
Header.ascx
Encabezado
pgina
Header.ascx
ASPState
tempdb
AplicacinWeb
Laboratorio
Control usuario
namedate.ascx
Control usuario
namedate.ascx
Componente
Men
Class1.vbor Class1.cs
Componente
Men
Class1.vbor Class1.cs
Arch.
XML
Web.
config
*****************************use******************************
En esta demostracin, veremos las caractersticas y funcionalidades de la
aplicacin Web Benefits. Para seguir esta demostracin es necesario instalar la
aplicacin Web Benefits, siguiendo los pasos de la Gua de instalacin.
Default.aspx es la pgina de inicio de la aplicacin Web Benefits. Desde esta
pgina, los usuarios pueden navegar a otros formularios Web, incluyendo las
pginas para introducir informacin sobre beneficios especficos, como
coberturas de seguros de vida, planes de pensiones, seguros mdicos y
coberturas dentales.
Ejecutar la aplicacin
1. Abrir el proyecto LabApplication en Visual Studio .NET 2003
Seleccionar los tres proyectos utilizando el Explorador de soluciones. Cada
proyecto se proporciona en sus versiones de Visual Basic .NET y C#.
Seleccionar las bases de datos utilizando el Explorador de soluciones.
2. Generar LabApplication.
3. Abrir Microsoft Internet Explorer y navegar a
http://localhost/BenefitsVB/default.aspx para mostrar la solucin en
Visual Basic .NET y navegar a http://localhost/BenefitsCS/default.aspx para
mostrar la solucin en C#.
La aplicacin Web tiene proteccin; por tanto, se redirecciona a la pgina
login.aspx para iniciar sesin. Esto se establece en el archivo Web.config.
La pgina login.aspx compara los datos de usuario con los nombres y
contraseas de usuario almacenadas en la base de datos coho de SQL
Server.
Introduccin
Descripcin del Microsoft .NET Framework 25
4. Hacer clic en Click here!
Como actuamos como un nuevo usuario, la pgina register.aspx se utiliza
para agregarnos a la lista de usuarios registrados de la aplicacin Web
Benefits.
5. Introducir la informacin de usuario y hacer clic en Save.
Cuando la pgina register.aspx nos agregue a la base de datos e iniciemos
sesin, se mostrar la pgina default.aspx, ya que es la pgina que
solicitamos originalmente.
La pgina default.aspx tiene un control de usuario que es un anuncio de
pgina con enlaces en la parte superior. Este control de usuario lee del
mismo componente que la lista de casillas de verificacin de la pgina.
6. Seleccionar algunas casillas de verificacin y hacer clic en Submit.
Cuando se hace clic en Submit, la pgina lee qu casillas de verificacin
estn seleccionadas y muestra una lista de salida.
7. Hacer clic en Life Insurance.
La pgina Life Insurance utiliza controles de servidor, controles de
validacin y un control de validacin de resumen. Un control calendario
muestra la fecha actual.
8. Introducir informacin incorrecta y hacer clic en Save.
Se muestran mensajes de Error en un control de resumen de validacin.
9. Introducir informacin correcta y hacer clic en Save.
10. Hacer clic en Medical.
Esta pgina utiliza un control de usuario y variables de sesin para mostrar
el mismo nombre y la fecha de nacimiento introducidos en la pgina Life
Insurance.
11. Hacer clic en Select a doctor.
Este enlace redirecciona a la pgina doctors.aspx. La pgina doctors.aspx
utiliza conexin a base de datos y un control DataGrid. La pgina
doctors.aspx invoca procedimientos almacenados y clasifica y pagina los
datos.
12. Hacer clic en Select para seleccionar un mdico y clic en Submit.
La informacin del mdico seleccionado se retorna a la pgina medical.aspx
de la URL (Uniform Resource Locator).
13. Hacer clic en Retirement Account.
Esta pgina obtiene su informacin de varios documentos de datos en
formato XML. Un contador de pginas muestra el nmero de visitas que se
han realizado a la pgina.
14. Hacer clic en Dental.
La pgina dental.aspx conecta con el servicio Web XML DentalService, que
lee una lista de dentistas de la base de datos SQL Server dentists.
26 Descripcin del Microsoft .NET Framework
Leccin: Recursos .NET
Recursos.NET
*****************************use******************************
En esta leccin, estudiaremos algunos de los recursos disponibles para el
desarrollo de aplicaciones Web en Visual Studio .NET.
En esta leccin, aprenderemos a encontrar la informacin necesaria para
desarrollar aplicaciones Web ASP.NET.
Introduccin
Objetivo de la leccin
Descripcin del Microsoft .NET Framework 27
Recursos .NET
Documentacin del .NET Framework
Cdigo de ejemplo
Tutorialesde Inicio rpido
Comunidades online
Sitios Web
www.gotdotnet.com
www.asp.net
msdn.microsoft.com
www.google.com
*****************************use******************************
En el aprendizaje del desarrollo con .NET, es posible que necesite buscar
soluciones para algunos problemas. La siguiente lista de recursos pretende ser
un punto de partida para encontrar ms informacin sobre .NET, adems de
respuestas a preguntas especficas:
Documentacin del .NET Framework. La documentacin del .NET
Framework se encuentra en dos sitios distintos.
En un equipo con Visual Studio .NET instalado, podemos acceder a la
documentacin desde Visual Studio .NET (en el men de Ayuda, o
pulsando F1).
Otra forma de acceder a la documentacin es seleccionar Todos los
programas en el men Inicio, seleccionar Microsoft .NET
Framework SDK, y hacer clic en Documentacin.
La documentacin del .NET Framework contiene cdigo de ejemplo en
varios idiomas, adems de tutoriales de inicio rpido.
Comunidades online. Las comunidades online son grupos de noticias
especficos de .NET.
Sitios Web externos. Existen varios sitios Web externos que ofrecen
conocimientos en profundidad sobre el desarrollo de .NET:
El primer sitio, http://www.gotdotnet.com, ofrece informacin detallada
para desarrolladores, ejemplos de cdigo, comunidades .NET y ms.
El segundo sitio, http://www.asp.net, es un sitio Web completamente
dedicado a los desarrolladores de ASP.NET.
Recursos
28 Descripcin del Microsoft .NET Framework
Tambin podemos acceder a los recursos disponibles en MSDN en
http://www.msdn.microsoft.com.
El sitio Web http://www.google.com es otra fuente para buscar
informacin sobre el desarrollo con .NET.
ndice
Descripcin 1
Leccin: Descripcin de Visual Studio .NET 2
Leccin: Crear un proyecto de aplicacin Web ASP.NET 26
Uso de Microsoft Visual Studio .NET
1 Uso de Microsoft Visual Studio .NET
Descripcin
Descripcin
Descripcin de Visual Studio .NET
Crear un proyecto de aplicacin Web ASP.NET
*****************************use******************************
En este mdulo, estudiaremos cmo utilizar las principales caractersticas de
Visual Studio .NET para crear aplicaciones Web con ASP.NET.
Visual Studio .NET es el entorno de desarrollo global que se utiliza para crear
potentes y fiables soluciones Web empresariales. Ofreciendo capacidades de
desarrollo Web extremo a extremo y componentes de servidor escalables y
reutilizables, Visual Studio .NET permite incrementar la productividad y
ayudar a crear aplicaciones y sitios Web ASP.NET ms eficazmente.
En este mdulo, aprenderemos a:
Navegar por el entorno de desarrollo integrado (Integrated Development
Environment, IDE) de Visual Studio .NET.
Crear, generar y visualizar un proyecto de aplicacin Web ASP.NET.
Introduccin
Objetivos
Uso de Microsoft Visual Studio .NET 2
Leccin: Descripcin de Visual Studio .NET
Leccin: Descripcin de Visual Studio .NET
Por quVisual Studio .NET?
Pgina de inicio
Plantillas de proyecto disponibles
Prctica: Seleccionar la plantilla del proyecto
IntegratedDevelopmentEnvironment(IDE)
Demostracin: Uso del IDE de Visual Studio .NET
Prctica: Uso del IDE de Visual Studio .NET
*****************************use******************************
Esta leccin presenta una introduccin al IDE de Visual Studio .NET. El IDE es
la interfaz de usuario (IU) comn y el conjunto de herramientas que se utilizan
para los distintos tipos de proyectos y lenguajes de programacin soportados
por Visual Studio .NET.
En esta leccin, aprenderemos a:
Entender la utilidad de Visual Studio .NET.
Explicar los enlaces de la pantalla de bienvenida del IDE.
Identificar los tipos de proyectos y plantillas disponibles.
Identificar las ventanas disponibles en el IDE.
Introduccin
Objetivos de la leccin
3 Uso de Microsoft Visual Studio .NET
Por qu Visual Studio .NET?
Por quVisual Studio .NET?
Un IDE para mltiples lenguajes y mltiples tipos de
proyectos
Mltiples lenguajes en un proyecto
Mltiples tipos de proyectos en una solucin
Navegador integrado
Soporte de depuracin
Interfaz personalizable
*****************************use******************************
Visual Studio .NET simplifica el desarrollo de soluciones Web empresariales
potentes y fiables e incrementa la eficacia del desarrollador al proporcionar un
entorno de desarrollo compartido y familiar. Los componentes ya desarrollados,
los asistentes de programacin y la posibilidad de reutilizar componentes
escritos en cualquier lenguaje pueden reducir significativamente el tiempo de
desarrollo. La opcin de completar el cdigo basada en Microsoft IntelliSense
permite producir cdigo preciso ms rpidamente. El potente soporte de
depuracin multilenguaje extremo a extremo ayuda a que las aplicaciones estn
operativas ms rpidamente.
Visual Studio .NET tiene un nico IDE que proporciona un aspecto coherente,
con independencia del lenguaje de programacin que se utilice o el tipo de
aplicacin que se desarrolle. Las caractersticas que antes estaban disponibles
para un nico lenguaje, ahora estn disponibles para todos los lenguajes.
Visual Studio .NET soporta el desarrollo en varios de los lenguajes basados en
Microsoft .NET. Este soporte de diversos y distintos lenguajes permite a los
desarrolladores trabajar con el lenguaje que prefieran, puesto que ya no
necesitan aprender un nuevo lenguaje para cada nuevo proyecto.
Los lenguajes que se incluyen en Visual Studio .NET son:
Microsoft Visual Basic .NET
C#
J #
Microsoft Visual C++
Introduccin
Un IDE
Mltiples lenguajes
Uso de Microsoft Visual Studio .NET 4
Para ms informacin sobre los lenguajes disponibles basados en .NET,
consultar el Mdulo Uso de lenguajes basados en Microsoft .NET.
Nota
5 Uso de Microsoft Visual Studio .NET
Visual Studio .NET soporta el desarrollo de mltiples tipos de proyectos, que
abarcan desde aplicaciones basadas en Microsoft Windows hasta aplicaciones
Web ASP.NET y servicios Web XML.
Este soporte para mltiples tipos de proyectos permite trabajar de forma
simultnea en varios proyectos sin necesidad de cambiar el entorno de
desarrollo o aprender nuevas interfaces de herramientas o lenguajes.
Visual Studio .NET contiene un navegador integrado basado en Microsoft
Internet Explorer. El navegador est integrado en el IDE y puede accederse a l
desde mltiples ventanas y mens.
Esta accesibilidad al navegador permite visualizar el sitio Web durante el ciclo
de desarrollo sin tener que transferir a otro programa y volver a escribir las
cadenas de la URL (Uniform Resource Locator).
Visual Studio .NET est diseado para soportar depuracin desde el cdigo
inicial hasta el despliegue de la aplicacin. El soporte de depuracin incluye
puntos de interrupcin, expresiones break, expresiones watch y la posibilidad
de recorrer el cdigo de instrucciones o procedimientos paso a paso.
Para ms informacin sobre la depuracin, consultar el Mdulo
Seguimiento en las aplicaciones Web Microsoft ASP.NET.
El IDE de Visual Studio .NET puede personalizarse a nivel de ventanas y
herramientas. Por tanto, podemos mostrar nicamente las herramientas o
ventanas que utilicemos en un momento determinado y ocultar el resto.
Mltiples tipos de
proyectos
Navegador integrado
Soporte de depuracin
Nota
Interfaz personalizable
Uso de Microsoft Visual Studio .NET 6
Pgina de inicio
Pgina de inicio
Acceso de soporte en lnea
Proyectos recientes
*****************************use******************************
Cada vez que iniciamos Visual Studio .NET, se muestra la pgina de inicio.
Esta pgina proporciona una ubicacin centralizada para establecer
preferencias, leer noticias sobre productos, acceder a discusiones con otros
desarrolladores y obtener otra informacin que puede utilizarse para iniciarse en
el entorno de Visual Studio .NET.
Podemos visualizar la pgina de inicio en cualquier momento mientras
trabajamos en el entorno de desarrollo.
Visualizar la pgina de inicio
En el men de Ayuda, hacer clic en Mostrar pgina de inicio.
Si hacemos clic en Introduccin, la ayuda dinmica muestra temas sobre el
inicio de nuevos proyectos, y se muestran las dos carpetas siguientes:
Proyectos
La carpeta Proyectos muestra enlaces a los ltimos proyectos en los que se
ha trabajado. Esta carpeta permite abrir rpidamente Visual Studio .NET y
cargar todos los archivos relacionados con los proyectos actuales.
Encontrar ejemplos
La carpeta Encontrar ejemplos presenta un motor de bsqueda que busca
cdigo de ejemplo por lenguaje y palabra clave en lnea desde ms-
help://MS.VSCC.
Introduccin
Introduccin
Novedades
7 Uso de Microsoft Visual Studio .NET
Si hacemos clic en Novedades se nos proporciona acceso a las actualizaciones
en las secciones Recursos de Visual Studio, Recursos para Partners e
Informacin de Producto.
Hacer clic en Comunidad en lnea proporciona acceso a los sitios de Microsoft
Visual Studio .NET Web y los grupos de noticias relacionados.
Hacer clic en Titulares proporciona acceso a las caractersticas de Visual
Studio .NET, artculos tcnicos y a la base de conocimiento de Microsoft Visual
Studio .NET.
Hacer clic en Bsqueda en lnea proporciona un motor de bsqueda que
accede a la biblioteca en lnea de Microsoft MSDN.
Hacer clic en Descargas proporciona acceso a descargas relacionadas con
Visual Studio .NET, cdigo de ejemplo y material de referencia.
Hacer clic en Servicios Web XML proporciona herramientas para encontrar un
servicio Web XML ejecutando una consulta en un directorio de servicios Web
XML denominado UDDI (Universal Description, Discovery, and Integration).
Adems, podemos utilizar la seleccin Servicios Web XML para registrar un
servicio Web XML en el directorio UDDI.
Hacer clic en Alojamiento Web proporciona una lista de enlaces a proveedores
de alojamiento.
Hacer clic en Mi perfil permite establecer un perfil de usuario que ajusta el
cuadro de herramientas, el nuevo proyecto predeterminado y la ayuda dinmica
para adaptarlos a nuestras preferencias de programacin. Podemos cambiar
nuestro perfil en cualquier momento para modificar estas opciones de
configuracin personalizadas.
Tenemos la opcin de escoger un perfil ya existente, como Desarrollador
Visual Basic, o modificar manualmente cada uno de los elementos del perfil.
Comunidad en lnea
Titulares
Bsqueda en lnea
Descargas
Servicios Web XML
Alojamiento Web
Mi perfil
Uso de Microsoft Visual Studio .NET 8
Plantillas de proyectos disponibles
Plantillas de proyectos disponibles
La lista de plantillas de proyectos disponibles se basa
en las selecciones del Perfil y Tipos de proyectos
*****************************use******************************
Visual Studio .NET proporciona plantillas que soportan la creacin de los tipos
de proyectos ms habituales. Estas plantillas contienen todos los archivos
necesarios y trabajan con nuestro perfil para ajustar el IDE a la configuracin
correcta del proyecto seleccionado.
Estas plantillas nos ayudan a aprovechar mejor el tiempo al permitir que nos
concentremos en agregar funciones al proyecto y no tener que establecer la
infraestructura cada vez que cambiamos de tipo de proyecto.
Cuando creamos un proyecto en Visual Studio .NET, tambin creamos un
contenedor de mayor tamao denominado Solucin. Esta Solucin puede
contener mltiples proyectos, del mismo modo que un contenedor de proyectos
puede contener mltiples pginas.
Las soluciones permiten que nos concentremos en el proyecto o conjunto de
proyectos necesarios para desarrollar e implementar nuestra aplicacin, en lugar
de tener que centrarnos en los detalles de administracin de los objetos y de los
archivos que los definen. Al utilizar el concepto de Solucin como contenedor,
sta nos permite:
Trabajar con mltiples proyectos en una misma instancia del IDE.
Trabajar con elementos, configuraciones y opciones aplicables a un grupo
de proyectos.
Administrar archivos miscelneos que se abren fuera del contexto de una
Solucin o de un Proyecto.
Utilizar el Explorador de soluciones, que es una visualizacin grfica de
nuestra solucin, para organizar y administrar todos los proyectos y archivos
necesarios para disear, desarrollar e implementar una aplicacin.
Introduccin
Soluciones y proyectos
9 Uso de Microsoft Visual Studio .NET
Uso de Microsoft Visual Studio .NET 10
Visual Studio .NET incluye mltiples plantillas de proyectos clasificadas por
lenguaje y tipo. Para seleccionar la plantilla correcta, es necesario especificar
antes el lenguaje en el que trabajaremos.
Las plantillas de proyectos disponibles en Visual Basic y Microsoft Visual C#
incluyen:
Plantillas de proyecto Descripcin
Aplicacin para
Windows
La plantilla de proyecto Aplicacin para Windows se utiliza
para crear aplicaciones Windows estndar. Esta plantilla
agrega automticamente las referencias y archivos de
proyecto esenciales que la aplicacin necesita como punto de
inicio.
Biblioteca de clases La plantilla Biblioteca de clases se utiliza para crear clases y
componentes reutilizables que pueden compartirse con otros
proyectos.
Biblioteca de
controles de Windows
La plantilla Biblioteca de controles de Windows se utiliza
para crear controles personalizados para usarlos en
formularios Windows Forms.
Aplicacin Web
ASP.NET
La plantilla de proyecto Aplicacin Web ASP.NET se utiliza
para crear una aplicacin Web ASP.NET en un equipo en el
que se haya instalado Internet Information Services (IIS)
versin 5.0 o posterior. La plantilla crea los archivos bsicos
que se necesitan en el servidor como ayuda para iniciar el
diseo de la aplicacin.
Servicio Web
ASP.NET
La plantilla de proyecto Servicio Web ASP.NET se utiliza
para escribir un servicio Web XML que pueda ser consumido
por otros servicios o aplicaciones Web en una red.
Los servicios Web XML son componentes disponibles en
Internet y estn diseados para interactuar nicamente con
otras aplicaciones Web.
Biblioteca de
controles Web
La plantilla Biblioteca de controles Web se utiliza para crear
controles de servidor Web personalizados. La plantilla agrega
los elementos de proyecto necesarios para iniciar la creacin
de un control que pueda agregarse posteriormente a cualquier
proyecto Web.
Aplicacin de consola La plantilla de proyecto Aplicacin de consola se utiliza para
crear aplicaciones de consola. Normalmente, las aplicaciones
de consola se disean sin una IU grfica y se compilan en un
archivo ejecutable autnomo. Una aplicacin de consola se
ejecuta desde la lnea de comandos intercambiando la
informacin de entrada y de salida entre el smbolo de
sistema y la aplicacin que se est ejecutando.
Servicio de Windows La plantilla Servicio de Windows se utiliza para crear
aplicaciones de servicios de Windows, aplicaciones
ejecutables de ejecucin de larga duracin que se ejecutan en
su propia sesin de Windows.
Proyecto vaco La plantilla Proyecto vaco se utiliza para crear un tipo de
proyecto propio. La plantilla crea la estructura de archivos
necesaria para almacenar la informacin sobre la aplicacin.
Las referencias, archivos o componentes deben agregarse a la
plantilla manualmente.
Plantillas de proyectos
11 Uso de Microsoft Visual Studio .NET
(continuacin)
Plantillas de proyecto Descripcin
Proyecto Web vaco La plantilla Proyecto Web vaco es para usuarios avanzados
que deseen empezar con un proyecto vaco. La plantilla crea
la estructurade archivos necesaria para un proyecto basado en
servidor en un servidor IIS. Las referencias y componentes
(como pginas de formularios Web Forms) deben agregarse
manualmente.
Nuevo proyecto en
carpeta existente
La plantilla de proyecto Nuevo proyecto en carpeta
existente se utiliza para crear un proyecto en blanco en un
directorio de aplicacin existente. Podemos decidir agregar
los archivos desde el directorio de la aplicacin existente en
el nuevo proyecto haciendo clic con el botn derecho en cada
uno de los elementos del Explorador de soluciones y
seleccionando Incluir en el proyecto del men contextual.
La siguiente tabla muestra una lista de plantillas de proyectos adicionales
disponibles en Visual Studio .NET.
Grupo de plantillas Descripcin
Proyectos Visual C++ Las plantillas incluyen:
Proyectos ATL (Active Template Library)
Aplicaciones administradas
Biblioteca de clases administradas
Servicios Web administrados
Proyectos de
instalacin e
implementacin
La plantilla Proyectos de instalacin e implementacin
permite crear instaladores para distribuir una aplicacin. El
archivo Windows Installer (.msi) resultante contiene la
aplicacin, los archivos dependientes, informacin sobre la
aplicacin (como entradas de registro) e instrucciones para la
instalacin.
Otros proyectos Las plantillas incluyen:
Proyectos de bases de datos
Proyectos empresariales
Proyectos de extensibilidad
Proyectos de aplicacin Application Center Test
Las plantillas Biblioteca de clases, Proyecto vaco, Nuevo proyecto en
carpeta existente, Biblioteca de controles Web, Servicio Windows, Biblioteca
de controles Windows y Proyecto Web vaco no estn disponibles en la Edicin
Estndar de Visual Studio .NET.
Nota
Uso de Microsoft Visual Studio .NET 12
Prctica: seleccin de la plantilla de proyecto
Prctica: seleccin de la plantilla de proyecto
Los estudiantes
Seleccionarn la platilla de proyecto correcta
para un determinado escenario
Tiempo: 5 minutos
*****************************use******************************
Escoger la plantilla de proyecto adecuada para cada uno de los
siguientes escenarios:
Se desea crear un control con una IU que pueda reutilizarse en cualquier
aplicacin Windows.
_____________________________________________________________
_____________________________________________________________
Se desea generar una aplicacin que se ejecute en un nico equipo que
utiliza Windows.
_____________________________________________________________
_____________________________________________________________
Se desea crear una aplicacin Web dinmica que incluya pginas Web y que
pueda utilizar servicios Web XML.
_____________________________________________________________
_____________________________________________________________
Se desea crear un componente reutilizable que sea accesible para varias
aplicaciones Windows o Web.
_____________________________________________________________
_____________________________________________________________
13 Uso de Microsoft Visual Studio .NET
Se desea crear un control Web definido por el usuario que pueda ser
utilizado en varias pginas Web.
____________________________________________________________
____________________________________________________________
Se desea crear una aplicacin que se ejecute desde una lnea de comandos.
____________________________________________________________
____________________________________________________________
Se desea crear una clase a cuyos mtodos pueda acceder cualquier
aplicacin Web a travs de Internet.
____________________________________________________________
____________________________________________________________
Se desea crear un servicio Windows que se ejecute de modo continuado, con
independencia de si un usuario ha iniciado sesin o no.
____________________________________________________________
____________________________________________________________
Uso de Microsoft Visual Studio .NET 14
Entorno de desarrollo integrado (IDE)
Entorno integrado de desarrollo (IDE)
Cuadro de
herramientas
Lista de tareas
Explorador
de
soluciones
Ayuda dinmica
Editor/Navegador
Propiedades Explorador
de servidores
Examinador de objetos
*****************************use******************************
El IDE de Visual Studio .NET contiene mltiples ventanas que proporcionan
diversas herramientas y servicios. Muchas de las caractersticas de Visual
Studio .NET estn disponibles desde varias de las ventanas, mens y barras de
herramientas del IDE.
No podemos mover ni ocultar las ventanas del IDE dependiendo de nuestras
preferencias personales. El men Ver se utiliza para seleccionar las ventanas a
mostrar. Podemos hacer clic en el botn del alfiler Ocultar automticamente
para convertir ventanas estticas en ventanas emergentes.
El editor/navegador es la ventana de interfaz principal de Visual Studio .NET.
En modo editor, el editor/navegador muestra el cdigo para editar y
proporciona una interfaz grfica WYSIWYG (What You See Is What You Get)
para la ubicacin de los controles. Podemos arrastrar y soltar para crear el
diseo visual de nuestra aplicacin. A continuacin, podemos gestionar el
diseo lgico de la aplicacin modificando el cdigo del control Web
predeterminado.
Introduccin
Editor/navegador
15 Uso de Microsoft Visual Studio .NET
Hay dos opciones para pantalla del editor: modo Diseo y modo HTML:
Modo Diseo
En modo Diseo, el editor permite mover los controles y los elementos
grficos por la ventana mediante una sencilla operacin de arrastrar y soltar.
Visual Studio .NET proporciona dos esquemas de posicionamiento de
controles para disear pginas Web: FlowLayout y GridLayout. En
FlowLayout, los controles se ubican en la pgina uno a continuacin del
otro, mientras que GridLayout permite posicionar con exactitud cada
control, agregando automticamente etiquetas DHTML (Dynamic Hypertext
Markup Language) a los controles.
Cuando agregamos un control a una pgina Web en modo Diseo, Visual
Studio .NET agrega al formulario Web Form cdigo de soporte y
predetermina las propiedades. A continuacin, podemos cambiar a modo
HTML para mostrar el cdigo y editarlo.
Modo HTML
En modo HTML, Visual Studio .NET destaca nuestro cdigo para que los
distintos elementos, como los nombres de variables y las palabras clave,
sean identificables al instante. La caracterstica de IntelliSense proporciona
sugerencias para la finalizacin automtica y permite generar funciones
simplemente seleccionando desde listas de sintaxis disponibles.
Cuando utilizamos la ventana del editor en modo HTML, aparecen dos
listas desplegables en la parte superior de la ventana: la lista Nombre de
Clase, a la izquierda, y la lista Nombre de Mtodo, a la derecha. La lista
Nombre de Clase muestra todos los controles del formulario asociado. Si
hacemos clic en el nombre de un control de la lista, la lista Nombre de
Mtodo mostrar todos los eventos de ese control. Los eventos son acciones
que puede realizar el control y que pueden ser interpretadas por nuestra
aplicacin. Utilizando conjuntamente las listas Nombre de Clase y
Uso de Microsoft Visual Studio .NET 16
Nombre de Mtodo, podemos localizar y editar rpidamente el cdigo de
nuestra aplicacin.
El Examinador de objetos es una herramienta que proporciona informacin
sobre los objetos y sus mtodos, propiedades, eventos y constantes.
El Explorador de soluciones muestra la jerarqua de los archivos del proyecto.
Desde esta ventana, podemos mover y modificar archivos, por ejemplo:
Utilizar una operacin de arrastrar y soltar para reorganizar elementos.
Seleccionar un elemento del Explorador de soluciones y la ventana
Propiedades mostrar las propiedades de ese elemento. Esto permite
cambiar las propiedades a nivel de proyecto o de pgina.
Hacer clic con el botn derecho en el archivo, proyecto o solucin para ver
las opciones disponibles, incluyendo agregar, generar y editar pginas.
Los tipos de archivos que muestra el Explorador de soluciones incluyen:
Referencias de proyectos que listan las clases que utiliza la pgina y los
controles Web.
Todos los formularios Web Forms del proyecto.
Todas las pginas de cdigo subyacente que contienen la lgica que soporta
los formularios Web Forms.
Carpetas relacionadas con proyectos y sub-elementos.
Examinador de objetos
Explorador de
soluciones
17 Uso de Microsoft Visual Studio .NET
La ayuda dinmica proporciona acceso a temas de la ayuda local y en lnea, en
funcin de la configuracin de Mi perfil, el Tipo de proyecto y la ubicacin
actual del cursor. A medida que nos movemos por el IDE o editamos cdigo,
las opciones disponibles en la ayuda dinmica se ajustan para corresponderse
con nuestra actividad.
Visual Studio .NET permite ajustar las propiedades de documentos, clases y
controles utilizando una ventana comn de Propiedades. Cuando creamos o
seleccionamos un elemento, la ventana Propiedades muestra automticamente
las propiedades relacionadas. Como muestra la siguiente ilustracin, las
propiedades disponibles se listan en la columna izquierda, mientras que las
opciones de configuracin se listan a la derecha.
Ayuda dinmica
Propiedades
Uso de Microsoft Visual Studio .NET 18
La Lista de Tareas permite hacer un seguimiento del estado de las tareas
mientras se desarrollan las aplicaciones. Visual Studio .NET tambin utiliza la
Lista de tareas para sealar errores cuando se genera una aplicacin.
Existen varias formas de agregar una tarea a la Lista de tareas, por ejemplo:
Agregar tareas manualmente, haciendo clic en la Lista de tareas e
introduciendo elementos.
La tarea superior de la Lista de tareas en la siguiente imagen de pantalla es
una tarea aadida manualmente.
Visual Studio .NET agrega automticamente una tarea con smbolos, como
el comentario 'TODO en el cdigo.
La segunda tarea de la siguiente imagen de pantalla ha sido aadida
automticamente por Visual Studio .NET debido a un comentario 'TODO
del cdigo. Para acceder a esta seccin del cdigo, hacemos clic en el
elemento de la Lista de tareas y Visual Studio .NET abrir la pgina referida
en esa lnea de comentario.
Existen varios smbolos (tokens) preestablecidos que pueden utilizarse en el
cdigo y que aadirn automticamente una tarea a la Lista de tareas.
Ver y agregar a la lista de smbolos:
a. En el men Herramientas, hacer clic en Opciones.
b. En el cuadro de dilogo Opciones, en la carpeta Entorno, hacer clic en
Lista de tareas.
Visual Studio .NET agrega automticamente los errores producidos en la
generacin a la Lista de tareas.
La tarea inferior de la siguiente imagen de pantalla se aadi
automticamente cuando se gener la pgina. Para acceder a esta seccin
del cdigo, hacer clic en el elemento de la lista de tareas y Visual Studio
.NET abrir la pgina referida en la lnea que contiene el error.
Lista de tareas
19 Uso de Microsoft Visual Studio .NET
El Explorador de servidores permite examinar conexiones a datos locales,
servidores y servicios de Windows. El Explorador de servidores soporta la
integracin de servicios externos en nuestro sitio Web.
El Cuadro de herramientas permite arrastrar y soltar los controles que formarn
nuestra aplicacin.
Las herramientas disponibles se agrupan por categoras en los siguientes mens:
Datos
Esta categora contiene objetos que permiten a la aplicacin conectarse y
acceder a datos de una base de datos Microsoft SQL Server
y otras bases
de datos.
Web Forms
Esta categora contiene un conjunto de controles de servidor que pueden
agregarse a pginas Web.
Componentes
Esta categora contiene componentes que soportan la infraestructura de
nuestra aplicacin.
HTML
Esta categora contiene un conjunto de controles HTML que pueden
agregarse a la pgina Web. Estos controles pueden ejecutarse tanto en el
lado servidor como en el lado cliente.
Explorador de
servidores
Cuadro de herramientas
Uso de Microsoft Visual Studio .NET 20
21 Uso de Microsoft Visual Studio .NET
Demostracin: Uso del IDE de Visual Studio .NET
Demostracin: Uso de Visual Studio .NET IDE
Abrir Visual Studio .NET
Crear una nueva aplicacin Web ASP.NET
Cambiar el nombre de la aplicacin Web
Agregar tareas a la Lista de tareas
Utilizar la ayuda dinmica
*****************************use******************************
En esta demostracin, aprenderemos a utilizar el IDE de Visual Studio .NET
para crear un proyecto de aplicacin Web ASP.NET, agregar tareas a la Lista
de tareas, utilizar la ayuda dinmica y utilizar el Explorador de servidores.
Ejecutar esta demostracin
1. Abrir Visual Studio .NET.
2. Mostrar las caractersticas de la Pgina de inicio, como Novedades,
Bsqueda en lnea y Mi perfil.
3. Utilizando Visual Studio .NET, crear una nueva solucin en blanco
denominada MyFirstSolution:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Solucin en
blanco.
b. En el cuadro de dilogo Nuevo proyecto, escribir MyFirstSolution en
el cuadro de texto Nombre y hacer clic en Aceptar.
La solucin MyFirstSolution contendr varios proyectos. La solucin sirve
como contenedor para agrupar estos proyectos relacionados.
4. Crear un nuevo proyecto de Aplicacin Web ASP.NET denominado
MyFirstWebApplication en la solucin MyFirstSolution:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto:
En la listaTipos de proyecto, hacer clic en Proyectos Visual Basic. En
la lista dePlantillas, hacer clic en Aplicacin Web ASP.NET,
establecer la Ubicacin en http://localhost/
Crear una solucin
Visual Studio .NET
Crear un proyecto de
aplicacin Web
ASP.NET como parte de
la solucin
Visual Basic .NET
Uso de Microsoft Visual Studio .NET 22
MyFirstWebApplicationVB, hacer clic en Agregar a solucin, y clic
en Aceptar.
En la listaTipos de proyecto, hacer clic en Proyectos Visual C#. En la
lista dePlantillas, hacer clic en Aplicacin Web ASP.NET, establecer
la Ubicacin en http://localhost/MyFirstWebApplicationCS, hacer
clic en Agregar a solucin, y clic en Aceptar.
5. Utilizando el Explorador de soluciones, mostrar los archivos generados al
crear la aplicacin Web.
6. Utilizando el Explorador de Windows, mostrar la ubicacin de los archivos
en el sistema de archivos.
Los archivos de solucin se encuentran en la carpeta
\Mis documentos\Visual Studio Projects\MyFirstSolution.
Los archivos del proyecto Visual Basic .NET se encuentran en la carpeta
\Inetpub\wwwroot\MyFirstWebApplicationVB y los archivos del
proyecto C#se encuentran en la carpeta
\Inetpub\wwwroot\MyFirstWebApplicationCS.
7. En el Explorador de soluciones de Visual Studio .NET, seleccionar
WebForm1.aspx y mostrar las propiedades listadas en la ventana
Propiedades.
8. Utilizando el Cuadro de herramientas, agregar un control Label y un control
Button al formulario Web Form.
Observar que la ventana Propiedades muestra ahora las propiedades del
control Button.
9. En el men Ayuda, hacer clic en Ayuda dinmica.
La ventana de ayuda dinmica se abre con temas relacionados con el control
Button.
10. Hacer clic en el control Label.
La ventana de ayuda dinmica muestra temas relacionados con el control
Label.
11. Hacer clic en el tema Members (System.Web.UI.WebControls) de Label.
El tema se muestra en la ventana principal de Visual Studio .NET.
Mostrar las propiedades Text y Visible.
12. En el Explorador de servidores, expandir Servidores, expandir
nombre_equipo, expandir Servidores SQL Server, y expandir
nombre_equipo.
Se mostrar la lista de bases de datos instaladas en el equipo local que
ejecutan SQL Server.
13. Por ejemplo, abrir la tabla dentists de la base de datos dentists.
14. Si la Lista de tareas no est visible, en el men Ver, hacer clic en Mostrar
tareas y clic en Todos para mostrar la ventana Lista de tareas.
15. Insertar las siguientes tareas:
Agregar un nuevo formulario Web Form de ASP.NET
Agregar un nuevo proyecto a la solucin
16. En el men Archivo, hacer clic en Guardar todo.
C#
Examinar la ubicacin
de los nuevos archivos
Visualizar las
propiedades del
formulario Web Form
Ayuda dinmica
Explorador de
servidores
Lista de tareas
23 Uso de Microsoft Visual Studio .NET
Uso de Microsoft Visual Studio .NET 24
Prctica: uso del IDE de Visual Studio .NET
Prctica: Uso del IDE de Visual Studio .NET
Los estudiantes
Realizarn tareas con el IDE de Visual
Studio .NET
Tiempo
5 minutos
*****************************use******************************
Completar las siguientes tareas y enumerar qu ventana(s) se han
utilizado:
Crear un nuevo proyecto de aplicacin Web.
_____________________________________________________________
_____________________________________________________________
Agregar un control Button al formulario Web Form predeterminado.
_____________________________________________________________
_____________________________________________________________
Agregar una tarea al proyecto.
_____________________________________________________________
_____________________________________________________________
25 Uso de Microsoft Visual Studio .NET
Visualizar las propiedades del proyecto de aplicacin Web.
____________________________________________________________
____________________________________________________________
Determinar qu bases de datos SQL Server estn instaladas en nuestro
equipo.
____________________________________________________________
____________________________________________________________
Uso de Microsoft Visual Studio .NET 26
Leccin: Crear un proyecto de aplicacin Web ASP.NET
Leccin: Crear un proyecto de aplicacin Web ASP.NET
El proceso de desarrollo
Archivos de la aplicacin Web
Estructura de los archivos de la aplicacin Web
Demostracin: Crear un proyecto de aplicacin Web
*****************************use******************************
En esta leccin, estudiaremos cmo crear, generar y visualizar una aplicacin
Web con ASP.NET.
Tras esta leccin, seremos capaces de:
Explicar cmo se desarrollan las pginas de las aplicaciones Web
ASP.NET.
Identificar la funcin de los archivos utilizados por las soluciones Visual
Studio .NET.
Explicar el proceso de generacin de una aplicacin Web ASP.NET.
Crear, generar y visualizar una aplicacin Web ASP.NET.
Introduccin
Objetivos de la leccin
27 Uso de Microsoft Visual Studio .NET
El proceso de desarrollo
El proceso de desarrollo
Crear una especificacin
de diseo
Crear una especificacin
de diseo
Generar
Generar
Probar y
depurar
Probar y
depurar
Crear la interfaz
y escribir cdigo
Crear la interfaz
y escribir cdigo
Crear un
nuevo proyecto
Crear un
nuevo proyecto
Visual Studio .NET
Implementar
Implementar
*****************************use******************************
Visual Studio .NET contiene todo lo necesario para generar una aplicacin Web
ASP.NET de principio a fin.
Crear una aplicacin Web ASP.NET con Visual Studio .NET implica los
siguientes pasos bsicos:
1. Crear una especificacin de diseo
La especificacin de diseo es la gua que utilizaremos cuando creemos una
aplicacin Web. Debemos tomarnos tiempo antes de escribir cdigo para
disear la aplicacin que crearemos. Aunque Visual Studio .NET
proporciona herramientas que nos ayudan a desarrollar rpidamente una
solucin, tener una idea clara de las necesidades del usuario y del conjunto
inicial de caractersticas nos ayudar a ser ms eficaces en nuestro trabajo
de desarrollo. Empezar con una especificacin de diseo tambin nos
ayudar a ahorrar tiempo minimizando el potencial de reescritura de cdigo
debido a una pobre o inexistente especificacin de diseo.
2. Crear un nuevo proyecto
Cuando seleccionamos una nueva plantilla de proyecto, Visual Studio .NET
crea automticamente los archivos y el cdigo predeterminado necesarios
para soportar el proyecto.
Como parte de esta creacin inicial del proyecto, deberamos transferir las
principales tareas de codificacin desde nuestra especificacin de diseo a
la Lista de tareas de Visual Studio .NET. Esta transferencia permite hacer
un seguimiento de nuestro desarrollo contra la especificacin.
3. Crear la interfaz
Introduccin
Uso de Microsoft Visual Studio .NET 28
Para crear la interfaz de nuestra aplicacin Web, en primer lugar
necesitaremos ubicar controles y objetos en las pginas Web utilizando la
ventana Editor/Navegador en modo Diseo.
A medida que agregamos objetos a un formulario, podemos establecer sus
propiedades desde la tabla en la ventana Propiedades o como cdigo en la
ventana de Edicin.
Para ms informacin sobre agregar controles a un formulario Web
Form ASP.NET, consultar el Mdulo Crear un formulario Web Form con
Microsoft ASP.NET.
4. Escribir cdigo
Tras establecer las propiedades iniciales del formulario Web Form
ASP.NET y sus objetos, podremos escribir los procedimientos de eventos
que se ejecutarn al realizar diferentes acciones sobre un control u objeto.
Es posible que tambin necesitemos escribir cdigo para agregar lgica de
negocio y para acceder a datos.
Para ms informacin sobre escribir cdigo en formularios Web
Forms con ASP.NET, ver el Mdulo Agregar cdigo a un formulario Web
Form con Microsoft ASP.NET.
5. Generar
Cuando generamos un proyecto, compilamos todo el cdigo de las pginas
Web y dems archivos de clases en una librera de enlace dinmico
(dynamic-link library, DLL) denominada ensamblado.
Visual Studio .NET tiene dos opciones de generacin: debug y release.
Cuando desarrollamos un proyecto por primera vez, generamos versiones de
depuracin. Cuando estamos preparados para liberar el proyecto, crearemos
una versin release del proyecto.
6. Probar y depurar
Probar y depurar no es un paso a realizar una nica vez, sino algo que se
realiza repetidamente durante el proceso de desarrollo. Cada vez que
realizamos un cambio importante, es necesario generar una versin de
depuracin de la aplicacin para asegurarnos de que funciona segn lo
previsto.
Visual Studio .NET ofrece numerosas herramientas de depuracin que
podemos utilizar para encontrar y solucionar errores de nuestra aplicacin.
7. Implementar
Cuando un proyecto est totalmente depurado y se ha generado una versin
release, podemos implantar los archivos generados en un servidor Web en
produccin.
Para ms informacin sobre implementar una aplicacin Web
ASP.NET, consultar el Mdulo Configuracin, optimizacin y distribucin
de aplicaciones Web ASP.NET.
Nota
Nota
Nota
29 Uso de Microsoft Visual Studio .NET
Archivos en aplicaciones Web
Archivos en aplicaciones Web
Archivos de solucin (.sln, .suo)
Archivos de proyecto (.vbproj, .csproj)
Archivos de aplicacin Web
Formularios Web FormsASP.NET(.aspx)
Servicios Web ASP.NET (.asmx)
Clases, pginas de cdigo subyacente (.vbo .cs)
Clases de aplicaciones globales (.asax)
Archivo Web.config
Ensamblado del proyecto (.dll)
*****************************use******************************
Cuando creamos un nuevo proyecto o trabajamos con proyectos existentes,
Visual Studio .NET crea un determinado conjunto de archivos que soportan
nuestro desarrollo.
Al crear un nuevo proyecto, tambin se crea una solucin, aunque la solucin
nicamente tenga un proyecto. Se crea una carpeta para cada solucin en la
carpeta \Mis documentos\Visual Studio Projects que contiene los archivos
.sln y .suo.
Archivos de solucin (.sln)
La extensin de archivo NombreSolucin.sln se utiliza para archivos de
solucin que enlazan uno o ms proyectos, y almacena informacin global.
Los archivos .sln son similares a los archivos de grupo Visual Basic (.vbg),
que aparecen en versiones anteriores de Visual Basic.
Solution User Options (.suo)
La extensin de archivo NombreSolucin.suo se utiliza para archivos que
acompaan los registros de solucin y las personalizaciones que
agreguemos a nuestra solucin. Este archivo guarda nuestra configuracin,
como puntos de interrupcin y elementos de tareas, para que sean
recuperados cada vez que abramos la solucin.
Cada proyecto es una nica aplicacin Web almacenada en su propia carpeta.
Dentro de la carpeta de proyecto se encuentra el archivo de configuracin del
proyecto y los archivos reales que constituyen el proyecto. El archivo de
configuracin del proyecto es un documento XML que contiene referencias a
todos los elementos del proyecto, como formularios y clases, adems de
referencias de proyecto y opciones de compilacin.
Introduccin
Archivos de solucin
Archivos de proyecto
Uso de Microsoft Visual Studio .NET 30
Los archivos de proyecto Visual Basic .NET utilizan una extensin .vbproj,
mientras que C#utiliza .csproj. Estas extensiones permiten diferenciar entre
archivos escritos en otros lenguajes compatibles con .NET y facilitan la
inclusin de mltiples proyectos basados en diferentes lenguajes en la misma
solucin.
Los proyectos de aplicaciones Web se crean en una nueva carpeta
\Inetpub\wwwroot. Adems, en IIS, se crea un directorio virtual que apunta a
la carpeta del proyecto.
Visual Studio .NET soporta varios tipos de archivos de aplicaciones y
extensiones:
Formularios Web Forms ASP.NET (.aspx)
Los formularios Web Forms ASP.NET se utilizan cuando es necesario
generar sitios Web dinmicos a los que los usuarios accedern directamente.
Los formularios Web Forms ASP.NET pueden estar soportados por una
pgina de cdigo subyacente diseada por la extensin WebForm.aspx.vb o
WebForm.aspx.cs.
Servicios Web ASP.NET (.asmx)
Los servicios Web se utilizan cuando deseamos crear sitios Web dinmicos
a los que nicamente accedern otros programas.
Los servicios Web ASP.NET pueden estar soportados por una pgina de
cdigo subyacente designada por la extensin WebService.asmx.vb o
WebService.asmx.vb.
Clases y pginas de cdigo subyacente (.vb o .cs)
Las versiones anteriores de Visual Basic utilizaban diferentes extensiones de
archivo para distinguir entre clases (.cls), formularios (.frm), mdulos (.bas),
y controles de usuario (.ctl). Visual Basic .NET permite mezclar mltiples
tipos en un nico archivo .vb.
Las pginas de cdigo subyacente utilizan dos extensiones: el tipo de pgina
(.aspx o .asmx) y la extensin de Visual Basic (.vb) o la extensin de C#
(.cs). Por ejemplo, el nombre de archivo completo para la pgina de cdigo
subyacente de un formulario Web Form ASP.NET predeterminado es
WebForm1.aspx.vb para un proyecto Visual Basic .NET y para un proyecto
C#es WebForm1.aspx.cs.
Estudiaremos ms sobre pginas de cdigo subyacente en el Mdulo
Agregar cdigo a un formulario ASP.NET.
Archivos de descubrimiento (.disco y .vsdisco)
Los archivos de descubrimiento son archivos basados en XML que
contienen enlaces (URLs) a recursos que proporcionan informacin para el
descubrimiento programtico de un servicio Web XML.
Clases de aplicacin global (global.asax)
El archivo Global.asax, tambin conocido como el archivo de la aplicacin
ASP.NET, es un archivo opcional que contiene cdigo para responder a
eventos a nivel de aplicacin provocados por ASP.NET o por HttpModules.
En tiempo de ejecucin, se parsea Global.asax y se compila en una clase
.NET Framework generada dinmicamente y derivada de la clase base
HttpApplication.
Archivos de
aplicaciones Web
Nota
31 Uso de Microsoft Visual Studio .NET
Archivos de recursos (.resx)
Un recurso es cualquier dato no ejecutable implantado lgicamente con una
aplicacin. Un recurso puede mostrarse en una aplicacin como un mensaje
de error o como parte de la IU. Los recursos pueden contener datos de
diversos tipos, incluyendo cadenas, imgenes y objetos persistentes.
Almacenar los datos en un archivo de recursos permite modificarlos sin
necesidad de recompilar toda la aplicacin.
Styles.css
Styles.css es el archivo de hojas de estilo predeterminado para la aplicacin
Web.
Archivo Web.config
Este archivo Web.config contiene opciones de configuracin que el CLR
lee, como polticas de enlace de ensamblados, objetos remoting, etc., y otras
configuraciones que la aplicacin puede leer. Los archivos Web.config
tambin contienen las clases de aplicacin global soportadas por un
proyecto.
Los archivos que no estn basados en un lenguaje de programacin tendrn sus
propias extensiones. Por ejemplo, un archivo Crystal Reports utiliza la
extensin .rpt y un archivo de texto utiliza .txt.
Cuando se compila un proyecto Web, se crean dos tipos adicionales de
archivos:
Archivos ensamblados del proyecto (.dll)
Todas las pginas de cdigo subyacente (.aspx.vb y .aspx.cs) de un proyecto
estn compiladas en un nico archivo ensamblado que se almacena como
ProjectName.dll. Este archivo ensamblado del proyecto se ubica en el
directorio /bin del sitio Web.
AssemblyInfo.vb o AssemblyInfo.cs
El archivo AssemblyInfo se utiliza para describir la informacin general del
ensamblado, como la versin y los atributos del mismo.
Para ms informacin sobre archivos que soportan aplicaciones Web
ASP.NET, consultar la documentacin de Visual Studio .NET.
Otros archivos
Ensamblado de
proyecto
Nota
Uso de Microsoft Visual Studio .NET 32
Estructura de los archivos de una aplicacin Web
Estructura de los archivos de una aplicacin Web
wwwroot wwwroot
Bin Bin
Inetpub Inetpub
ProjectA ProjectA
MisDocumentos MisDocumentos
Archivos de desarrollo Archivos de desarrollo
Archivos de
ensamblado
Archivos de
ensamblado
WebForm1.aspx
WebForm1.aspx.vb
(pgina de cdigo subyacente)
Visual Studio
projects
Visual Studio
projects
Solution Solution
Solution.sln ProjectA.vbproj
ProjectA.dll
Generar
*****************************use******************************
Cuando creamos una aplicacin Web ASP.NET, Visual Studio .NET crea dos
carpetas para almacenar los archivos que soportan esa aplicacin. Cuando
compilamos un proyecto, se crea una tercera carpeta para almacenar el archivo
.dll resultante.
Visual Studio .NET crea una carpeta para la solucin, ProjectA, que contiene el
archivo ProjectA.sln. Este archivo es un mapa de los diversos archivos que
soportan el proyecto.
Tambin podemos crear una solucin en blanco y agregarle proyectos. Si
creamos una solucin en blanco, tendremos una solucin con un nombre
distinto al del proyecto.
Visual Studio .NET tambin crea una carpeta denominada ProjectA, en la
carpeta Inetpub\wwwroot, que contiene los archivos que requiere la aplicacin
Web. Estos archivos incluyen:
El archivo de proyecto, ProjectA.vbproj o ProjectA.csproj, que es un
documento XML que contiene referencias a todos los elementos del
proyecto, como formularios y clases, adems de referencias de proyecto y
opciones de compilacin.
Formularios ASP.NET Web Forms, WebForm1.aspx, o servicios Web
XML, WebService.asmx.
Pginas de cdigo subyacente, WebForm1.aspx.vb, WebService1.asmx.vb,
WebForm1.aspx.cs o WebService1.asmx.cs.
Un archivo Web.config, que contiene las opciones de configuracin de la
aplicacin Web.
Introduccin
Mis documentos
Inetpub
33 Uso de Microsoft Visual Studio .NET
Un archivo Global.asax que gestiona los eventos que son invocados
mientras la aplicacin Web se est ejecutando.
Cuando generamos un proyecto de aplicacin Web, Visual Studio .NET crea un
ensamblado en la carpeta Inetpub\wwwroot\ProjectA\bin. Un ensamblado es un
archivo .dll que se crea desde todas las pginas de cdigo subyacente que
constituyen una aplicacin Web.
El Ensamblado
Uso de Microsoft Visual Studio .NET 34
Demostracin: creacin de un proyecto de aplicacin Web
aplicacin Web
Poblar el formulario WebFormASP.NET
Agregar un nuevo formulario WebForm
ASP.NET
Agregar un nuevo proyecto
Escribir cdigo para el botn
Generar y depurar la solucin
*****************************use******************************
En esta demostracin, aprenderemos a agregar formularios Web Forms a un
proyecto de aplicacin Web, agregar un nuevo proyecto a una solucin y
generar y ejecutar un proyecto de aplicacin Web.
Ejecutar esta demostracin
1. Abrir el archivo de solucin MyFirstSolution.
2. Abrir el archivo WebForm1.aspx en vista de Diseo.
3. Existen ya dos controles, un control Button y un control Label, incluidos en
la demostracin anterior.
4. Seleccionar la etiqueta y cambiar la propiedad ID a lblMessage en la
ventana Propiedades.
5. Hacer doble clic en el control Button para abrir la pgina de cdigo
subyacente del formulario Web Form, y agregar el siguiente comentario al
procedimiento del evento:
'TODO: Write Hello World
//TODO: Write Hello World
Se agrega automticamente una nueva tarea a la Lista de tareas debido al
smbolo TODO.
6. En el men Proyecto, hacer clic en Agregar Web Forms.
7. En el cuadro de dilogo Agregar nuevo elemento, cambiar el nombre
predeterminado por login.aspx, y hacer clic en Abrir.
Poblar un formulario
Web FormASP.NET
Visual Basic .NET
C#
Agregar un nuevo
formulario Web Form
ASP.NET
35 Uso de Microsoft Visual Studio .NET
Tambin podemos agregar un formulario Web Form ASP.NET a un
proyecto haciendo clic con el botn derecho en el proyecto en el Explorador
de soluciones, clic en Agregar y clic en Agregar Web Forms.
8. En la Lista de tareas, seleccionar la casilla de la tarea Agregar un nuevo
formulario Web Form ASP.NET.
9. En el Explorador de soluciones, hacer clic con el botn derecho en la
solucin, clic en Agregar y clic en Nuevo proyecto.
10. En el cuadro de dilogo Agregar nuevo proyecto:
Hacer clic en Visual Basic, clic en Servicio Web ASP.NET, establecer la
ubicacin en http://localhost/MyFirstWebServiceVB, y hacer clic en
Aceptar.
Hacer clic en Visual C#, clic en Servicio Web ASP.NET, establecer la
ubicacin en http://localhost/MyFirstWebServiceCS, y hacer clic en
Aceptar.
El nuevo proyecto tambin contiene un servicio Web XML.
11. En la Lista de tareas, seleccionar la tarea Agregar nuevo proyecto a la
solucin.
12. En la Lista de tareas, hacer doble clic en la tarea TODO: Write Hello
World.
Se abre el archivo correcto y el cursor se sita en la ubicacin apropiada del
cdigo.
13. Escribir el siguiente cdigo:
lblMessage.Txt = "Hello World!"
lblMessage.Txt = "Hello World!";
ste es un error de sintaxis debido a que el cdigo establece la
propiedad Txt en lugar de la propiedad Text. Este error mostrar qu ocurre
cuando falle la generacin.
14. Eliminar TODO del comentario TODO: Write Hello World.
La tarea TODO desaparece automticamente de la Lista de tareas.
15. Verificar que MyFirstWebApplicationVB o MyFirstWebApplicationCS es
el proyecto de inicio. En el Explorador de soluciones,
MyFirstWebApplicationVB o MyFirstWebApplicationCS deberan aparecer
en negrita.
Para establecer MyFirstWebApplicationVB o
MyFirstWebApplicationCS como proyecto de inicio, hacer clic con el
botn derecho en el proyecto MyFirstWebApplicationVB o
MyFirstWebApplicationCS en el Explorador de soluciones y clic en
Establecer como proyecto de inicio.
16. En el men Generar, hacer clic en Generar solucin para generar la
solucin.
Nota
Agregar un nuevo
proyecto
Visual Basic .NET
C#
Escribir cdigo para un
control button
Visual Basic .NET
C#
Nota
Generar y ejecutar la
solucin
Nota
Uso de Microsoft Visual Studio .NET 36
Tanto MyFirstWebApplicationVB o MyFirstWebApplicationCS como
MyFirstWebServiceVB o MyFirstWebServiceCS se han generado, pero
la ventana de Resultados muestra la siguiente condicin de error:
Generar: 1 correctos, 1 incorrectos, 0 omitidos
Y se aade un mensaje de error a la Lista de tareas debido a que Txt no es
un miembro de System.Web.UI.WebControls.Label.
17. Para ver todas las tareas de ambos proyectos, en el men Ver, hacer clic en
Mostrar tareas y clic en Todas.
18. Hacer doble clic en el mensaje de error de la Lista de tareas. El cursor salta
a la ubicacin correcta del cdigo.
19. Corregir el error de sintaxis.
El cdigo correcto debera ser como el siguiente:
lblMessage.Text = "Hello World!"
lblMessage.Text = "Hello World!";
En Visual Basic .NET, cuando retiramos el cursor de la lnea de cdigo
corregida, el error se elimina de la Lista de tareas.
20. En el men Generar, hacer clic en Volver a generar solucin para volver a
generar la solucin.
Verificar que en la ventana Resultados figura el siguiente mensaje:
Volver a generar todo: 2 correctos, 0 incorrectos, 0
omitidos
21. Visualizar la pgina Web en un navegador, hacer clic en WebForm1.aspx
en el proyecto MyFirstWebApplicationVB o MyFirstWebApplicationCS
en el Explorador de soluciones, y hacer clic en Visualizar en navegador.
Podemos generar y examinar un formulario Web Form en un mismo
paso, haciendo clic con el botn derecho en la pgina del Explorador de
soluciones y clic en Generar y examinar.
22. En el navegador, hacer clic en el botn del formulario Web Form, y
comprobar que aparece el mensaje Hello World.
Visual Basic .NET
C#
Ver el resultado
Nota
ndice
Descripcin 1
Leccin: Crear formularios Web Forms 2
Leccin: Uso de controles de servidor 12
Crear formularios Web Forms con
Microsoft ASP.NET
Crear formularios Web Forms con Microsoft ASP.NET 1
Descripcin
Crear formularios Web Forms
Uso de controles de servidor
***************************** use******************************
En este mdulo, estudiaremos cmo crear y poblar formularios Web Forms.
Los formularios Web Forms son pginas Web programables que sirven como
interfaz de usuario (IU) para un proyecto de aplicacin Web utilizando
ASP.NET. Un formulario Web Form presenta informacin al usuario
visualizable en cualquier tipo de navegador, e implementa lgica de aplicacin
utilizando cdigo ejecutable en el servidor.
En este mdulo, aprenderemos a:
Agregar un formulario Web Form a un proyecto de aplicacin Web
ASP.NET.
Utilizar el Cuadro de herramientas de Microsoft Visual Studio .NET para
agregar controles de servidor a un formulario Web Form.
Introduccin
Objetivos
2 Crear formularios Web Forms con Microsoft ASP.NET
Leccin: crear formularios Web Forms
Ques un formulario Web Form?
Crear un formulario WebFormcon Visual Studio .NET
Demostracin: convertir una pgina HTML en un
formulario Web Form
***************************** use******************************
En esta leccin, estudiaremos cmo crear un formulario Web Form. Tambin
aprenderemos cmo identificar las principales caractersticas de los formularios
Web Forms.
En esta leccin, aprenderemos a:
Identificar y explicar el cdigo HTML (Hypertext Markup Language) que
compone un formulario Web Form.
Crear un formulario Web Form utilizando Visual Studio .NET.
Introduccin
Objetivos de la leccin
Crear formularios Web Forms con Microsoft ASP.NET 3
Qu es un formulario Web Form?
<%@ Page Language="vb" Codebehind="WebForm1.aspx.vb"
SmartNavigation="true"%>
<html>
<body ms_positioning="GridLayout">
<form id="Form1" method="post" runat="server">
</form>
</body>
</html>
<%@ Page Language="vb" Codebehind="WebForm1.aspx.vb"
SmartNavigation="true"%>
<html>
<body ms_positioning="GridLayout">
<form id="Form1" method="post" runat="server">
</form>
</body>
</html>
Extensin .aspx
Atributos de pgina
Directiva @ Page
Atributos de cuerpo
Atributos de formulario
***************************** use******************************
Los formularios Web Forms estn formados por una combinacin de HTML,
cdigo y controles que se ejecutan en un servidor Web ejecutando Microsoft
Internet Information Services (IIS). Los formularios Web Forms muestran una
interfaz de usuario que genera HTML y que se enva al navegador, mientras que
el cdigo de soporte y los controles que la componen permanecen en el servidor
Web. Esta divisin entre el interfaz en el cliente y el cdigo en el servidor es
una importante diferencia entre los formularios Web Forms y las pginas Web
tradicionales. Mientras una pgina Web tradicional requiere que todo el cdigo
se enve y se procese en el navegador, los formularios Web Forms nicamente
necesitan enviar al navegador los controles de la interfaz, y el proceso de las
pginas se mantiene en el servidor. Esta divisin entre IU y cdigo aumenta el
nmero de navegadores soportados e incrementa la seguridad y funcionalidad
de la pgina Web.
Los formularios Web Forms se denominan habitualmente pginas ASP.NET o
pginas ASPX. Los formularios Web Forms tienen una extensin .aspx y
funcionan como contenedores para el texto y los controles que deseamos
mostrar en el navegador.
Las pginas ASP.NET (.aspx) y Active Server Pages (ASP) (.asp) pueden
coexistir en el mismo servidor. La extensin del archivo determina si la pgina
la procesa ASP o ASP.NET.
Los formularios Web Forms estn frecuentemente formados por dos archivos
distintos: el archivo .aspx contiene la IU para el formulario Web Form, mientras
que el archivo .aspx.vb o .aspx.cs, denominado pgina de cdigo subyacente,
contiene el cdigo de soporte.
Introduccin
Extensin .aspx
4 Crear formularios Web Forms con Microsoft ASP.NET
Las funciones de un formulario Web Form estn definidas por tres niveles de
atributos. Los atributos de pgina definen las funciones globales, los atributos
de cuerpo definen cmo se mostrar una pgina y los atributos de formulario
definen cmo se procesarn los grupos de controles.
La etiqueta <@Page> define atributos especficos de la pgina que utiliza el
parseador de pginas ASP.NET y el compilador. nicamente podemos incluir
una etiqueta <@ Page>por archivo .aspx. Los siguientes ejemplos son
etiquetas <@ Page>tpicas para Microsoft Visual Basic .NET y para
Microsoft Visual C#
.NET:
<%@ Page Language="vb" Codebehind="WebForm1.aspx.vb"
SmartNavigation="true" %>
<%@ Page Language="c#" Codebehind="WebForm1.aspx.cs"
SmartNavigation="true" %>
Los atributos de una etiqueta <@ Page>incluyen:
Language
El atributo Language define el lenguaje en el que est escrito el script de la
pgina Web. Algunos de los valores de este atributo son: vb, c# y JScript.
Pgina Codebehind
El atributo de pgina Codebehind identifica la pgina de cdigo subyacente
que tiene la lgica que soporta el formulario Web Form. Cuando Visual
Studio .NET crea un formulario Web Form, como WebForm1.aspx, tambin
crea una pgina de cdigo subyacente, WebForm1.aspx.vb o
WebForm1.aspx.cs.
Para ms informacin sobre las pginas de cdigo subyacente,
consultar el Mdulo Agregar cdigo a un formulario Web Form con
Microsoft ASP.NET.
SmartNavigation
El atributo SmartNavigation de ASP.NET permite al navegador actualizar
nicamente las secciones del formulario que han cambiado. Las ventajas de
SmartNavigation son que la pantalla no parpadea mientras se actualiza; en
lugar de ello, se mantiene la posicin de desplazamiento y se mantiene la
"ltima pgina" en el historial. Smartnavigation nicamente est
disponible para los usuarios con Microsoft Internet Explorer 5 o superior.
Atributos de la pgina
Visual Basic .NET
C#
Nota
Crear formularios Web Forms con Microsoft ASP.NET 5
Los atributos de la etiqueta <Body> definen el aspecto de los objetos que se
muestran en el navegador del cliente. La siguiente es una etiqueta <Body>
tpica:
<body ms_positioning="GridLayout">
Los atributos de una etiqueta <Body>incluyen:
PageLayout
El atributo pageLayout (etiquetado como ms_positioning) determina cmo
se posicionan los controles y el texto en la pgina. Existen dos opciones
parapageLayout:
FlowLayout
En FlowLayout, el texto, las imgenes y los controles fluyen por la
pantalla, dependiendo del ancho de la ventana del navegador.
GridLayout
En GridLayout, los campos de texto, las imgenes y los controles de
una pgina estn fijados por coordinadas absolutas. GridLayout es el
valor de pageLayout predeterminado para Visual Studio .NET.
El siguiente cdigo de ejemplo muestra cmo implementar GridLayout
y situar un cuadro de texto:
<body ms_positioning="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:textbox id="txtField1" style="Z-INDEX: 101;
LEFT: 65px; POSITION: absolute; TOP: 98px"
runat="server" Height="26px" Width="194px">
</asp:textbox>
</form>
</body>
La etiqueta <Form> define cmo se procesarn los grupos de controles. La
etiqueta <Form> es diferente del trmino Web Form utilizado para definir la
pgina Web completa. Los atributos de la etiqueta <Form> definen cmo se
procesarn los controles. Aunque podemos tener muchos formularios HTML en
una pgina, nicamente podemos tener un formulario del lado del servidor en
una pgina .aspx.
El siguiente ejemplo es de una etiqueta <Form>tpica:
<form id="Form1" method="post" runat="server">
...
</form>
Atributos del cuerpo
Atributos del formulario
6 Crear formularios Web Forms con Microsoft ASP.NET
Los atributos de una etiqueta <Form> incluyen:
Method
El atributo Method identifica el mtodo para enviar valores de control de
retorno al servidor. Las opciones de este atributo son:
Post
Los datos se pasan en pares nombre/valor dentro del cuerpo de la
peticin HTTP (Hypertext Transfer Protocol).
Get
Los datos se pasan en una cadena de consulta.
Runat
Una de las principales caractersticas de un formulario Web Form es que los
controles se ejecutan en el servidor. El atributo runat="server" hace que el
formulario publique informacin de control de retorno a la pgina ASP.NET
en el servidor donde se ejecuta el cdigo de soporte. Si el atributo runat no
est establecido en "server", el formulario funciona como un formulario
HTML normal.
El siguiente cdigo procede del formulario Web Form predeterminado de
Visual Studio .NET al crear un nuevo proyecto de aplicacin Web ASP.NET
con Visual Basic .NET:
<%@Page Language="vb" AutoEventWireup="false"
Codebehind="WebForm1.aspx.vb"
Inherits="WebApplication1.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>WebForm1</title>
<meta name="GENERATOR" content="Microsoft Visual
Studio.NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.1">
<meta name="vs_defaultClientScript"
content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
'HTML y controles aqu
</form>
</body>
</html>
Ejemplo con Visual
Basic .NET
Crear formularios Web Forms con Microsoft ASP.NET 7
El siguiente cdigo procede del formulario Web Form predeterminado de
Visual Studio .NET al crear un nuevo proyecto de aplicacin Web ASP.NET
con Visual C#:
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs"
AutoEventWireup="false" Inherits="WebApplication1.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual
Studio 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript"
content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
'HTML y controles aqu
</form>
</body>
</html>
Ejemplo de C#
8 Crear formularios Web Forms con Microsoft ASP.NET
Crear un formulario Web Formcon Visual Studio .NET
Las nuevas aplicaciones Web ASP.NET crean un
formulario Web predeterminado: WebForm1.aspx
Crear formularios Web Formsadicionales desde el
Explorador de soluciones
Actualizar pginas HTML existentes en formularios
Web Forms
***************************** use******************************
Dependiendo del punto en que nos encontremos en el proceso de desarrollo,
existen varios modos de crear un formulario Web Form.
Cuando creamos un nuevo proyecto en Visual Studio .NET, se incluye
automticamente en el proyecto un formulario Web Form predeterminado
denominado WebForm1.aspx.
Crear un nuevo proyecto de aplicacin Web ASP.NET y un formulario
Web Form predeterminado
1. En Visual Studio .NET, en la Pgina de inicio, hacer clic en Nuevo
proyecto.
2. En el cuadro de dilogo Nuevo proyecto, hacer clic en Aplicacin Web
ASP.NET, escribir el nombre del proyecto en el campo Ubicacin y
hacer clic en Aceptar.
Visual Studio .NET crea una nueva aplicacin Web y un formulario Web
Form predeterminado denominado WebForm1.aspx.
Si estamos expandiendo un proyecto existente, podemos utilizar el Explorador
de soluciones para agregar rpidamente formularios Web Forms adicionales.
Agregar formularios Web Forms adicionales a un proyecto de
aplicacin Web
1. En la ventana del Explorador de soluciones, hacer clic con el botn
derecho en el nombre del proyecto, seleccionar Agregar, y hacer clic en
Agregar formulario Web Form. Se abrir el cuadro de dilogo Agregar
nuevo elemento - NombreProyecto.
2. En el cuadro de dilogo Agregar nuevo elemento - NombreProyecto,
cambiar el nombre del formulario Web Form, y hacer clic en Abrir.
Se crear un nuevo formulario Web Form y se agregar al proyecto.
Introduccin
Aplicaciones Web
nuevas
Crear formularios Web
Forms adicionales
Crear formularios Web Forms con Microsoft ASP.NET 9
Si estamos revisando un sitio Web existente, podemos importar pginas HTML
a Visual Studio .NET y actualizar esas pginas a formularios Web Forms.
Actualizar pginas HTML existentes
1. En el Explorador de soluciones, hacer clic con el botn derecho en el
nombre del proyecto, seleccionar Agregar y hacer clic en Agregar
elemento existente.
2. En el cuadro de dilogo Agregar elemento existente, navegar hasta la
ubicacin del archivo HTML, hacer clic en el nombre del archivo y
posteriormente en Abrir.
3. Cambiar el nombre del archivo nombreArchivo.htm por
nombreArchivo.aspx, y hacer clic en S a la pregunta de si estamos
seguros de desear cambiar la extensin del archivo.
4. Cuando se nos pregunte si deseamos crear un nuevo archivo de clase,
hacer clic en S.
Actualizar pginas
HTML
10 Crear formularios Web Forms con Microsoft ASP.NET
Demostracin: convertir una pgina HTML en un formulario Web
Form
Cambiar la extensin .htmpor la
extensin .aspx
***************************** use******************************
Un modo rpido de crear pginas Web ASP.NET es convertir las pginas
HTML existentes.
Ejecutar esta demostracin
1. Iniciar Visual Studio .NET.
2. Crear un nuevo Proyecto de aplicacin Web ASP.NET y establecer la
ubicacin en http://localhost/Demos03.
3. Hacer clic en Agregar elemento existente en el men Archivo.
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente, hacer clic en Todos los archivos (*.*).
5. Seleccionar la pgina HTMLPage.htm y hacer clic en Abrir. Este
archivo se puede encontrar dentro del fichero demos03.zip.
6. Abrir la pgina HTMLPage.htm y cambiar a la vista HTML.
7. Agregar una cuarta opcin al cuadro de lista que contenga Lead
Program Manager para mostrar que la ayuda de contexto IntelliSense
est funcionando en el archivo HTML.
El cdigo debera ser parecido el siguiente:
<option>Lead Program Manager</option>
8. Guardar los cambios de la pgina.
9. En el Explorador de soluciones, hacer clic con el botn derecho en
HTMLPage.htm y hacer clic en Cambiar nombre. Cambiar la
extensin .htm de la pgina por .aspx, hacer clic en S cuando se nos
pregunte si se estamos seguros, y hacer clic en S de nuevo cuando se nos
pregunte si deseamos crear un nuevo archivo de clase.
10. En la pgina HTMLPage.aspx, observamos que se ha aadido una
directiva@Page a la pgina.
Crear formularios Web Forms con Microsoft ASP.NET 11
11. Hacer clic en Mostrar todos los archivos en el Explorador de soluciones
para mostrar la pgina de cdigo subyacente que se ha creado.
12. Hacer clic en Guardar para guardar el proyecto.
13. Hacer clic con el botn derecho sobre HTMLPage.aspx en el Explorador
de soluciones, clic en Generar y examinar para generar el proyecto y
visualizar la pgina en el navegador de Visual Studio .NET.
Debemos generar el proyecto puesto que Visual Studio .NET necesita
compilar la nueva pgina de cdigo subyacente.
14. Escribir un nombre en el cuadro de texto Nombre, hacer clic en una
profesin en la lista Profession y hacer clic en Guardar.
Cuando se muestre la pgina de nuevo, la informacin en los controles se
habr perdido. Es el comportamiento predeterminado de los formularios
HTML.
15. Hacer clic con el botn derecho en la pgina y clic en Ver fuente para
mostrar el HTML fuente en el cliente.
El HTML enviado al cliente es el mismo que el HTML creado en el
servidor.
16. Cerrar la vista del cdigo fuente HTML en el navegador.
12 Crear formularios Web Forms con Microsoft ASP.NET
Leccin: uso de controles de servidor
Ques un control de servidor?
Tipos de controles de servidor
Guardar ViewState
Demostracin: convertir controles HTML en controles de
servidor
Controles de servidor HTML
Controles de servidor Web
Prctica: identificar el cdigo HTML generado por los
controles de servidor Web
Seleccionar el control adecuado
Demostracin: agregar controles de servidor a un
formulario Web
***************************** use******************************
En esta leccin, estudiaremos cmo utilizar controles de servidor ASP.NET,
como botones, cuadros de texto y listas desplegables. Estos controles de
servidor son diferentes de los controles HTML en los que la lgica de soporte
se ejecuta en el servidor y no en el navegador del usuario.
En esta leccin, aprenderemos a:
Describir las caractersticas de los controles de servidor.
Describir los tipos de controles de servidor disponibles.
Explicar cmo los formularios Web Forms guardan el control de servidor
Web ViewState.
Agregar controles de servidor HTML a formularios Web Forms.
Agregar controles de servidor Web a formularios Web Forms.
Seleccionar el control adecuado para una determinada situacin.
Introduccin
Objetivos de la leccin
Crear formularios Web Forms con Microsoft ASP.NET 13
Qu es un control de servidor?
Runat="server"
Los eventos ocurren en el servidor
Viewstatesaved
Havebuilt-in functionality
Commonobjectmodel
Todos tiene atributos Idy Text
Crear browser-specificHTML
<asp:Button id="Button1" runat="server"
Text="Submit"/>
<asp:Button id="Button1" runat="server"
Text="Submit"/>
***************************** use******************************
Los controles de servidor ASP.NET son componentes que se ejecutan en el
servidor y encapsulan la IU y dems funcionalidades relacionadas. Los
controles de servidor se utilizan en pginas ASP.NET y en las clases de cdigo
subyacente. Los controles de servidor incluyen botones, cuadros de texto y
listas desplegables.
El siguiente ejemplo es el de un control de servidor Button:
<asp:Button id="Button1" runat="server" Text="Submit" />
Los controles de servidor tienen un atributo runat="server", el mismo atributo
que los formularios Web Forms. Esto significa que la lgica del control se
ejecuta en el servidor y no en el navegador del usuario. Los controles de
servidor se diferencian de los controles HTML en que stos ltimos nicamente
se ejecutan en el navegador del cliente y no realizan ninguna accin en el
servidor.
Otra caracterstica de los controles de servidor es que el estado de la vista, las
opciones de configuracin y la entrada de datos de usuario en el control se
guardan automticamente cuando la pgina viaja entre el cliente y el servidor.
Los controles HTML tradicionales no tienen estado y vuelven a su
configuracin predeterminada cuando la pgina retorna del servidor al cliente.
La funcionalidad de un control es lo que se produce cuando el usuario hace clic
en un botn o en un cuadro de lista. A estos procesos se denominan
procedimientos de eventos. Como programadores del formulario Web Form,
debemos determinar los procedimientos de eventos asociados a cada control de
servidor.
Para ms informacin sobre la funcionalidad del control de servidor,
consultar el Mdulo Agregar cdigo a un formulario Web Form con Microsoft
ASP.NET.
Introduccin
Runat=server
Funcionalidad incluida
Nota
14 Crear formularios Web Forms con Microsoft ASP.NET
En ASP.NET, los controles de servidor se basan en un modelo de objetos
comn, y por tanto, comparten varios atributos entre s.
Por ejemplo, cuando deseamos establecer el color de fondo de un control,
siempre utilizamos el mismo atributo BackColor, independientemente del
control. El cdigo HTML siguiente del botn de un control de servidor Web
muestra algunos de los atributos tpicos de un control de servidor:
<asp:Button id="Button1" runat="server" BackColor="red"
Width="238px" Height="25px" Text="Web control"></asp:Button>
Cuando un navegador interpreta una pgina, los controles de servidor Web
determinan el tipo de navegador que solicita la pgina, y enva el cdigo HTML
adecuado.
Por ejemplo, si el navegador soporta scripting de cliente, como Internet
Explorer versin 4.0 o posterior, los controles generan scripts de cliente para
implementar su funcionalidad. Sin embargo, si el navegador no soporta
scripting de cliente, los controles crean cdigo del lado del servidor y requieren
ms viajes de ida y vuelta al servidor para obtener el mismo comportamiento.
El siguiente ejemplo es el cdigo HTML de ASP.NET en un formulario Web
Form que deberamos escribir para crear un cuadro de texto con el texto
predeterminado: "Introduzca su nombre de usuario"
<asp:TextBox id="TextBox1" runat="server" Width="238px"
Height="25px">Introduzca su nombre de usuario</asp:TextBox>
Cuando un usuario con Internet Explorer 6 accede a esta pgina, el CLR crea el
siguiente cdigo HTML personalizado para Internet Explorer 6:
<input name="TextBox1" type="text" value="Introduzca su nombre
de usuario" id="TextBox1" style="height:25px;width:238px" />
Como el control de servidor crea cdigo HTML personalizado en funcin de las
caractersticas disponibles en el navegador del cliente, podemos escribir cdigo
para las ltimas versiones de navegadores sin tener que preocuparnos de que los
usuarios que no estn actualizados puedan ser bloqueados por errores del
navegador.
Modelo de objetos
comn
Crear cdigo HTML
especfico del
navegador
Crear formularios Web Forms con Microsoft ASP.NET 15
Tipos de controles de servidor
Controles de servidor HTML
Controles de servidor Web
Controles intrnsecos
Controles de validacin
Controles ricos
Controles List-bound
Controles Web de Internet Explorer
***************************** use******************************
Existen numerosos tipos de controles de servidor disponibles en ASP.NET.
Algunos controles de servidor se parecen mucho a los controles HTML
tradicionales, mientras que otros son nuevos en ASP.NET. Esta amplia variedad
de controles nos permite personalizar nuestro formulario Web Form para que se
adapte a la aplicacin que estamos creando.
Por defecto, el servidor no tiene disponibles los elementos HTML de una
pgina de un formulario Web Form; los elementos HTML son tratados como
texto opaco que pasa a travs del navegador. Sin embargo, al agregar el atributo
runat="server" se convierten los elementos HTML en controles de servidor
HTML, exponindolos por tanto como elementos que podemos programar con
cdigo del lado del servidor.
Los controles de servidor Web no slo incluyen controles de tipo formulario,
como botones y cuadros de texto, sino tambin controles con funcionalidad
especial, como el control calendario. Los controles de servidor Web son ms
abstractos que los controles de servidor HTML, porque su modelo de objetos no
refleja necesariamente la sintaxis HTML.
Los controles de servidor Web se clasifican como:
Controles intrnsecos
Los controles intrnsecos concuerdan con los sencillos elementos HTML,
como botones o cajas de listas. Utilizamos estos controles del mismo modo
que utilizamos los controles de servidor HTML.
Controles de validacin
Los controles de validacin incorporan lgica que permite verificar la
entrada de datos de un usuario. Para probar la entrada de un usuario,
adjuntamos un control de validacin al control de entrada y especificamos
las condiciones de entrada de datos de usuario correctas.
Para ms informacin sobre los controles de validacin, consultar el
Introduccin
Controles de servidor
HTML
Controles de servidor
Web
Nota
16 Crear formularios Web Forms con Microsoft ASP.NET
Mdulo Validar la entrada de datos de usuario.
Controles ricos estndar
Los controles estndar son controles complejos que incluyen mltiples
funciones. Ejemplos de controles estndar incluyen el control AdRotator,
que se utiliza para mostrar una secuencia de anuncios o el control Calendar,
que proporciona un calendario de citas.
Controles enlazados a listas
Los controles enlazados a listas pueden mostrar listas de datos en una
pgina ASP.NET. Estos controles nos permiten mostrar, reformatear,
clasificar y editar datos.
Para ms informacin sobre los controles enlazados a listas y el
acceso a datos, consultar el Mdulo Acceso a datos relacionales utilizando
Microsoft Visual Studio .NET, y el Mdulo Acceso a datos con Microsoft
ADO.NET.
Controles Web de Internet Explorer
Los controles Web de Internet Explorer son un conjunto de controles
complejos, como MultiPage, TabStrip, Toolbar y TreeView, que pueden
descargarse desde Internet e integrarse en el entorno de Visual Studio .NET
para ser reutilizados en cualquier aplicacin Web con ASP.NET. Estos
controles pueden ser interpretados en todos los navegadores utilizados
habitualmente, y al mismo tiempo aprovechan las potentes caractersticas
soportadas por las versiones de Internet Explorer 5.5 o superior. Podemos
descargar estos controles desde:
http://msdn.microsoft.com/library/default.asp?url=/workshop/webcontrols/o
verview/overview.asp.
Este ejemplo muestra el cdigo HTML de tres controles de tipo botn: un
botn HTML, un botn de control de servidor HTML y un botn de control
de servidor Web. Todos los controles botn parecen idnticos en el navegador
del usuario. El botn HTML nicamente puede invocar eventos del lado del
cliente, mientras que el botn de control de servidor HTML y el botn de
control de servidor Web producen eventos del lado del servidor.
El siguiente es el cdigo de un control de botn HTML:
<INPUT type="button" value="HTML Button">
Si agregamos el atributo runat="server" el control de botn HTML
anterior se convierte en un control de servidor HTML que se ejecutar en el
servidor. Adems del atributo runat="server", tambin debemos agregar
un atributo id para que el control funcione como un control de servidor.
El botn de control de servidor HTML se muestra en el siguiente
ejemplo:
<INPUT type="button" value="HTML Server Control"
id="button1" runat="server">
El botn de control de servidor Web utiliza cdigo HTML de ASP.NET:
<asp:Button id="Button1" runat="server" Text="Web
control"/>
Nota
Ejemplo de controles
equivalentes
Crear formularios Web Forms con Microsoft ASP.NET 17
Guardar el estado de la vista
Control oculto ViewStatede pares de nombre y valor
almacenados en el formulario Web Form
De forma predeterminada, ajustable a nivel de
formulario Web Formy control
<%@ Page EnableViewState="False" %>
<asp:ListBox id="ListName"
EnableViewState="true" runat="server">
</asp:ListBox>
<%@ Page EnableViewState="False" %>
<asp:ListBox id="ListName"
EnableViewState="true" runat="server">
</asp:ListBox>
<input type="hidden" name="__VIEWSTATE"
value="dDwtMTA4MzE0MjEwNTs7Pg==" />
<input type="hidden" name="__VIEWSTATE"
value="dDwtMTA4MzE0MjEwNTs7Pg==" />
***************************** use******************************
Uno de los retos de los sitios Web es resolver el almacenamiento del estado de
los controles (configuracin o entrada de datos del usuario) en una pgina Web
mientras el cdigo HTML viaja entre el cliente y el servidor. Como con
cualquier tecnologa basada en HTTP, los formularios Web Forms no tienen
estado, lo que significa que el servidor no conserva ninguna informacin sobre
las peticiones anteriores del cliente.
Los formularios Web Forms ASP.NET gestionan este problema de
almacenamiento del estado del control de servidor Web agregando un control
oculto denominado _VIEWSTATE que registra el estado de los controles en el
formulario Web Form. Concretamente, _VIEWSTATE se aade al formulario
del lado del servidor indicado por la etiqueta <Form runat="server">, y
nicamente registra el estado de los controles en esta seccin. Mientras la
pgina viaja desde el cliente al servidor, el estado del control de servidor Web
se almacena con la pgina y puede actualizarse en cualquier extremo de la
transaccin (en el cliente o el servidor).
Como el estado de la pgina Web se guarda dentro del formulario del servidor,
la pgina Web puede ser aleatoriamente enrutada en una granja de servidores
Web y no necesita volver al mismo servidor. La ventaja del proceso
_VIEWSTATE es que el programador puede concentrarse en el diseo de la
pgina y no necesita generar la infraestructura necesaria para realizar el
seguimiento del estado de la misma.
Introduccin
18 Crear formularios Web Forms con Microsoft ASP.NET
El control _VIEWSTATE es un control oculto que contiene el valor de una
cadena de pares nombre-valor que lista el nombre de cada control y el ltimo
valor de ese control.
Con cada peticin, el control _VIEWSTATE se actualiza y se enva al
servidor. La respuesta del servidor puede a su vez actualizar el control
_VIEWSTATE, que se devuelve con la respuesta. El resultado es que la
configuracin de la pgina permanece coherente de una solicitud a la siguiente.
El siguiente ejemplo incluye el cdigo HTML generado por un formulario Web
Form y enviado al cliente:
<form name="Form1" method="post" action="WebForm1.aspx"
id="Form1">
<input type="hidden" name="__VIEWSTATE"
value="dDw3NzE0MTExODQ7Oz4=" />
'HTML aqu
</form>
De forma predeterminada, un formulario Web Form guarda el estado de la vista
de los controles en el formulario Web Form. Para formularios Web Forms con
mltiples controles, el tamao del campo valor de las propiedades
_VIEWSTATE puede ralentizar el rendimiento. Para maximizar el
rendimiento de la pgina, podemos deshabilitar el atributo ViewState a nivel de
pgina y habilitar ViewState nicamente para determinados controles.
Para deshabilitar el almacenamiento del estado de la vista a nivel de pgina
Web, estableceremos el atributo EnableViewState de la directiva@Page,
como se muestra en el siguiente cdigo:
<%@ Page EnableViewState="False" %>
Para habilitar el almacenamiento del estado de la vista de un control especfico,
estableceremos el atributo EnableViewState del control, como se muestra en el
siguiente cdigo:
<asp:ListBox id="ListName" EnableViewState="true"
runat="server"></asp:ListBox>
Para ms informacin sobre guardar el estado, consultar el Mdulo
Gestionar el estado.
Control oculto
Deshabilitar y habilitar
ViewState
Nota
Crear formularios Web Forms con Microsoft ASP.NET 19
Demostracin: convertir controles HTML en controles de servidor
Actualizar controles HTML a controles de
servidor HTML
Agregar un control de servidor Web
Utilizar SmartNavigation
***************************** use******************************
Visual Studio .NET facilita la conversin de controles HTML en controles de
servidor.
Ejecutar esta demostracin
1. Visualizar la pgina HTMLPage.aspx que convertimos de una pgina
HTML en la demostracin anterior, en la vista HTML, y agregar un
atributo runat="server" a los controles de cuadro de texto, seleccin y el
de envo.
2. Hacer clic en Guardar para guardar el proyecto.
3. Visualizar la pgina HTMLPage.aspx en el navegador haciendo clic con
el botn derecho en la pgina en el Explorador de soluciones y haciendo
clic en Visualizar en el navegador. No es necesario volver a generar el
proyecto, ya que no se ha cambiado el cdigo.
4. Visualizar el cdigo fuente de la pgina para mostrar los cambios
realizados. Se ha agregado un atributo name a cada control de servidor.
5. Cerrar la vista del cdigo fuente HTML en el navegador.
6. En el navegador, introducir informacin en los controles, y hacer clic en
Guardar. Los controles todava pierden sus valores.
7. Editar la pgina y agregar un atributo runat="server" al formulario.
8. Guardar los cambios y visualizar la pgina de nuevo en el navegador. No
es necesario volver a generar el proyecto ya que no se ha agregado ningn
cdigo.
9. Visualizar el cdigo fuente de la pgina para mostrar los cambios
realizados. Entre otros cambios, se han agregado los atributos action y
method a la etiqueta del formulario y se ha creado un control oculto
denominado __VIEWSTATE.
10. Cerrar la vista del cdigo fuente HTML en el navegador.
11. Introducir informacin en los controles y hacer clic en Guardar. Ahora,
los controles guardan sus valores.
20 Crear formularios Web Forms con Microsoft ASP.NET
12. Editar la pgina y agregar un control de servidor Web Label al
formulario Web Form, debajo del botn Guardar:
<asp:label id="lblMessage" runat="server">Label</asp:label>
13. Guardar los cambios y visualizar la pgina en el navegador.
14. Visualizar el cdigo fuente de la pgina. El control de servidor Web
Label genera un elemento <span>.
15. Cerrar la vista del cdigo fuente HTML en el navegador.
16. Visualizar la pgina http://localhost/Demos03/HTMLPage.aspx en
Internet Explorer y modificar el tamao del navegador para que muestre
verticalmente menos que la pgina completa. La barra de desplazamiento
vertical debera estar visible.
17. Desplazarse hacia abajo y hacer clic en Guardar. Seremos redirigidos a
la parte superior de la pgina debido al postback.
18. Cerrar el navegador.
19. Editar la pgina en la vista HTML y agregar SmartNavigation= "true"
a la directiva@ Page.
El cdigo HTML debera ser parecido al siguiente:
<%@ Page SmartNavigation="true" Language="vb"
CodeBehind="HTMLPage.aspx.vb" AutoEventWireup="false"
Inherits="Mod04.HTMLPage" %>
<%@ Page SmartNavigation="true" Language="c#"
CodeBehind="HTMLPage.aspx.cs" AutoEventWireup="false"
Inherits="Mod04.HTMLPage" %>
20. Guardar los cambios y visualizar la pgina en otro navegador cuyo
tamao se haya modificado.
21. Desplazarse hacia abajo y hacer clic en Guardar. Esta vez, no somos
redireccionados a la parte superior de la pgina durante el postback, la
pgina mantiene su posicin actual.
22. Visualizar el cdigo fuente de la pgina en el navegador. En Internet
Explorer 4.0 y posterior, el atributo SmartNavigation crea IFrames para
actualizar nicamente la parte modificada de la pgina.
23. Cerrar la vista del cdigo fuente HTML en el navegador.
Agregar una etiqueta al
formulario Web Form
Uso de SmartNavigation
Visual Basic .NET
C#
Crear formularios Web Forms con Microsoft ASP.NET 21
Controles de servidor HTML
Basados en elementos HTML
Existen en el espacio de nombres
System.Web.UI.HtmlControls
<input type="text" id="txtName"
runat="server" />
<input type="text" id="txtName"
runat="server" />
***************************** use******************************
Los controles HTML de un formulario Web Form no estn disponibles en el
servidor. Si convertimos los controles HTML en controles de servidor HTML,
podemos exponerlos como elementos a nuestro cdigo del lado del servidor.
Esta conversin nos permite utilizar los controles para disparar eventos que son
gestionados en el servidor.
Los controles de servidor HTML incluyen el atributo runat="server", y deben
residir en una etiqueta contenedora <form runat="server"></form>.
La ventaja de los controles de servidor HTML es que nos permiten actualizar
rpidamente pginas existentes a formularios Web Forms. Adems, podemos
optimizar el rendimiento de una pgina ajustando qu controles deben funcionar
localmente en el navegador y qu controles se procesan en el servidor.
El siguiente cdigo de ejemplo muestra un sencillo cuadro de texto HTML que
el navegador procesa en el lado del cliente:
<input type="text" id="txtName" >
Si agregamos el atributo runat="server", el control se convierte en un control
de servidor HTML que ASP.NET procesa en el lado del servidor:
<input type="text" id="txtName" runat="server" />
Introduccin
Ejemplo
22 Crear formularios Web Forms con Microsoft ASP.NET
Controles de servidor Web
Controles de servidor Web
Existen en el espacio de nombres
System.Web.UI.WebControls
Sintaxis del control
HTML generado por el control
<asp:TextBox id="TextBox1"
runat="server">Text_to_Display
</asp:TextBox>
<asp:TextBox id="TextBox1"
runat="server">Text_to_Display
</asp:TextBox>
<input name="TextBox1" type="text"
value="Text_to_Display"
Id="TextBox1"/>
<input name="TextBox1" type="text"
value="Text_to_Display"
Id="TextBox1"/>
***************************** use******************************
Los controles de servidor Web son controles de servidor creados
especficamente para ASP.NET. A diferencia de los controles de servidor
HTML, los controles de servidor Web no funcionarn si falta el atributo
runat="server".
Los controles de servidor Web se basan en un modelo de objetos comn; por
ello, todos los controles comparten varios atributos, incluyendo la etiqueta
<asp:TipoControl...>, y un atributo id. Los controles de servidor Web existen
en el espacio de nombres System.Web.UI.WebControls y pueden utilizarse en
cualquier formulario Web Form.
Los controles de servidor Web intrnsecos corresponden a elementos HTML
simples. La siguiente tabla muestra algunos de los controles de servidor Web
intrnsecos utilizados ms habitualmente.
Control de
servidor Web
Control HTML
equivalente
Funcin del control de
servidor Web
<asp:button> <input type=submit> Crea un botn que enva una
peticin al servidor.
<asp:checkbox> <input type=checkbox> Crea una casilla de verificacin
que puede seleccionarse
haciendo clic.
<asp:hyperlink> <a href=""> </a> Crea un hiperenlace a una
etiqueta anchor HTML.
<asp:image> <img src=""> Crea un rea que se utiliza para
mostrar una imagen.
<asp:imagebutton> <input type=image> Crea un botn que incorpora la
visualizacin de una imagen en
lugar de texto.
<asp linkButton> Ninguno Crea un botn que tiene el
aspecto de un hiperenlace.
Introduccin
Controles de servidor
Web intrnsecos
Crear formularios Web Forms con Microsoft ASP.NET 23
(continuacin)
Control de
servidor Web
Control HTML
equivalente
Funcin del control de servidor
Web
<asp:label> <span> </span> Crea texto que los usuarios no
pueden modificar.
<asp:listbox> <select size="5">
</select>
Crea una lista de opciones. Permite
mltiples selecciones.
<asp:panel> <div> </div> Crea una divisin sin bordes en el
formulario que se utiliza como
contenedor para otros controles.
<asp:radiobutton> <input type=radiobutton> Crea un nico control de botn de
opcin.
<asp:table> <table> </table> Crea una tabla.
<asp:textbox> <input type=text> Crea un control de cuadro de texto.
Los controles de validacin son controles ocultos que validan la entrada de
datos del usuario comparndolos con patrones predeterminados. La siguiente
tabla muestra algunos de los controles de validacin que se utilizan ms
habitualmente.
Control Funcin
CompareValidator Requiere que la entrada concuerde con una segunda
entrada o campo existente.
CustomValidator Requiere que la entrada concuerde con una condicin
como que sean nmeros primos o impares.
RangeValidator Requiere que la entrada concuerde con un intervalo
especificado.
RegularExpressionValidator Requiere que la entrada concuerde con un formato
especificado como un nmero de telfono de un
determinado pas o una contrasea que tenganmeros y
letras.
RequiredFieldValidator Requiere que el usuario introduzca algn valor antes de
que el control sea procesado.
ValidationSummary Recopila todos los mensajes de error de los controles de
validacin para una visualizacin centralizada.
Para ms informacin sobre los controles de validacin, consultar el
Mdulo Validar la entrada de datos del usuario.
Los controles estndares proporcionan una rica funcionalidad a nuestro
formulario Web Form insertando funciones complejas. La siguiente tabla
muestra los controles ricos disponibles actualmente.
Control Funcin
AdRotator Muestra una secuencia (predefinida o aleatoria) de
imgenes.
Calendar Muestra un calendario grfico en el que los usuarios
pueden seleccionar fechas.
Controles de validacin
Nota
Controles ricos
estndares
24 Crear formularios Web Forms con Microsoft ASP.NET
Los controles enlazados a listas pueden mostrar datos desde una fuente de
datos. La siguiente tabla muestra algunos de los controles de lista que se
utilizan habitualmente.
Control Funcin
CheckBoxList Muestra datos como una columna de casillas de verificacin.
Repeater Muestra informacin desde un conjunto de datos utilizando el
conjunto de elementos y controles HTML que especifiquemos. El
control Repeater repite el elemento una vez por cada registro del
DataSet.
DataList Similar al control Repeater, pero con ms opciones de formato y
presentacin, incluyendo la posibilidad de mostrar informacin
en una tabla. El control DataList tambin nos permite especificar
el comportamiento de edicin.
DataGrid Muestra informacin, normalmente enlazada a datos en forma
tabular, con columnas. Tambin proporciona mecanismos para
permitir editar y clasificar.
DropDownList Muestra datos en un men desplegable.
Listbox Muestra datos en una ventana.
RadioButtonList Muestra datos en una columna de botones de opcin.
Para ms informacin sobre los controles enlazados a listas y el acceso a
datos, consultar el Mdulo Acceso a datos con Microsoft ADO.NET.
Controles enlazados a
listas
Nota
Crear formularios Web Forms con Microsoft ASP.NET 25
Prctica: identificar el cdigo HTML generado por los controles de
servidor Web
Los estudiantes:
Agregarn controles de servidor Web a un
formulario Web e identificarn el cdigo
HTML que se enva al cliente
Tiempo: 5minutos
***************************** use******************************
En esta prctica, agregaremos controles de servidor Web a un formulario Web
Form y visualizaremos el cdigo fuente en un navegador para determinar qu
cdigo HTML se ha enviado al cliente.
Cumplimentar la tabla inferior siguiendo los pasos
1. Iniciar Visual Studio .NET.
2. Crear un proyecto de aplicacin Web y establecer la ubicacin en
http://localhost/Practices03.
3. Abrir la pgina WebForm1.aspx.
4. Agregar los controles TextBox, Button, Label, ListBox, Image,
Hyperlink y Calendar al formulario Web Form.
5. Hacer clic con el botn derecho en WebForm1.aspx en el Explorador de
soluciones y clic en Generar y examinar.
6. Hacer clic con el botn derecho en el navegador y clic en Ver fuente
para ver el cdigo HTML enviado al cliente.
7. Cumplimentar la siguiente tabla con las etiquetas HTML del control.
Control de servidor Web HTML enviado al cliente
asp:textbox
asp:button
asp:label
26 Crear formularios Web Forms con Microsoft ASP.NET
asp:listbox
asp:image
asp:hyperlink
asp:calendar
Seleccionar el control adecuado
Senecesitanfuncionalidades
especficas como uncalendario
o rotacindepublicidad
El control interactuarcon
scriptsclientey servidor
Seestescribiendo unapgina
quepuedeser utilizadapor
varios navegadores
Seesttrabajando conpginas
HTML existentes y sedesea
agregar funcionalidades de
pginaASP.NET Web
Seprefiereunmodelo de
programacinVisual Basic
Seprefiereunmodelo de
objetos como HTML
Utilizar controles de Utilizar controles de
servidor Websi: servidor Websi:
Utilizar controles deservidor Utilizar controles deservidor
HTML si: HTML si:
El ancho debandano es un
problema
El ancho debandaes limitado
***************************** use******************************
Cuando creamos pginas ASP.NET, tenemos la opcin de utilizar controles de
servidor HTML o controles de servidor Web. Podemos mezclar estos tipos de
controles en la misma pgina para actualizar rpidamente una pgina HTML.
Como ejemplo de mezcla de tipos de controles, nuestra pgina ASP.NET podra
incluir un elemento HTML que listase la hora local, un botn basado en un
control de servidor HTML convertido a partir de un elemento HTML, y un
control de servidor basado en una caja de texto Web que acceda a datos desde
el servidor.
Lo mejor es evitar los controles de servidor HTML. Los controles de servidor
Web tienen mayor capacidad y un modelo de objetos ms rico que los controles
de servidor HTML.
Los controles de servidor HTML son elementos HTML modificados que se
ejecutan en el servidor en lugar de en el navegador cliente.
Utilizar controles de servidor HTML si:
Se prefiere un modelo de objetos como HTML. Los controles de servidor
HTML tienen prcticamente el mismo cdigo HTML que los controles
HTML bsicos. Los controles de servidor HTML tambin tienen
funcionalidad del lado del servidor como los controles de servidor Web.
Introduccin
Controles de servidor
HTML
Crear formularios Web Forms con Microsoft ASP.NET 27
Se est trabajando con pginas HTML existentes y se desea agregar
rpidamente funcionalidad incorporada en un formulario Web Form. Debido
a que los controles de servidor HTML se mapean exactamente a elementos
HTML, no es necesario reemplazar los controles y arriesgarse a tener
errores de sustitucin o problemas de formato de pgina.
El control necesita ejecutarse tanto utilizando scripting del lado del cliente
como del lado del servidor. Podemos escribir un script del lado del cliente y
trabajar con un control HTML normal ya que los controles estn visibles en
el cliente. Al mismo tiempo, podemos tener cdigo del lado del servidor, ya
que tambin es un control de servidor.
El ancho de banda es limitado y se necesita realizar una gran cantidad de
procesamiento en el cliente para reducir el uso del ancho de banda.
Los controles de servidor Web de ASP.NET no slo son equivalentes a los
controles HTML, sino que tambin incluyen varios controles nuevos que no
existen en HTML.
Utilizar controles de servidor Web si:
Se prefiere un modelo de programacin como Visual Basic. Se podr
utilizar programacin orientada a objetos, identificar controles por su
atributo ID y separar fcilmente la lgica de pgina de la lgica del interfaz
de usuario. Con los controles de servidor Web, tambin pueden crearse
aplicaciones con controles anidados y capturar eventos a nivel de
contenedor.
Se est creando una pgina Web que puede ser visualizada en diversos
navegadores. Como la lgica de los controles de servidor Web puede crear
cdigo HTML adaptado a las caractersticas disponibles en el navegador del
cliente, podemos escribir para los navegadores ms recientes sin necesidad
de preocuparse de que los errores de navegador no permitan a los usuarios
menos actualizados acceder a todas las funciones de la pgina Web.
Se necesitan funcionalidades especficas, como calendario o anuncios, o
rotacin de publicidad, disponibles nicamente como controles de servidor
Web.
El ancho de banda no est limitado y los ciclos de peticin-respuesta de los
controles de servidor Web no causan problemas de ancho de banda.
Controles de servidor
Web
28 Crear formularios Web Forms con Microsoft ASP.NET
Demostracin: agregar controles de servidor a un formulario Web
Form
Crear un formulario Web
Agregar controles TextBox, Buttony
Label
Agregar un control Calendar
***************************** use******************************
En esta demostracin, veremos cmo agregar controles de servidor Web a un
formulario Web Form.
Ejecutar esta demostracin
1. Abrir la pgina WebForm1.aspx del proyecto de aplicacin Web Mod04.
2. Agregar un control de servidor TextBox, Button y Label a la pgina
WebForm1.aspx.
3. Utilizando la ventana Propiedades, establecer las propiedades ID y Text
de los controles a los valores en la siguiente tabla:
Control ID Text
TextBox txtName Name
Button cmdSubmit Submit
Label lblMessage Message
4. Visualizar la pgina en vista HTML.
El formulario Web Form ha sido creado con el atributo runat="server", y
los atributos style se han agregado a los controles para ubicarlos en el
formulario Web Form en modo GridLayout.
Observar cmo se han implementado las propiedades ID y Text en HTML
para los distintos controles.
5. Generar y examinar WebForm1.aspx.
Agregar sencillos
controles de servidor
Web
Crear formularios Web Forms con Microsoft ASP.NET 29
6. Introducir texto en el cuadro de texto y hacer clic en Submit para mostrar
que el valor se conserva.
7. Visualizar la fuente de la pgina. Observar que el posicionamiento de los
controles se realiza utilizando DHTML.
8. Cerrar la vista de la fuente de la pgina.
1. Hacer clic con el botn derecho sobre el formulario en la vista Diseo y
hacer clic en Propiedades.
2. Cambiar Target Schema a Internet Explorer 3.02 / Navigator 3.0, y
hacer clic en Aceptar.
3. Guardar los cambios y visualizar la pgina de nuevo en el navegador.
4. Visualizar el cdigo fuente de la pgina.
Ahora, el posicionamiento de los controles se realiza utilizando tablas
HTML.
5. Cerrar la vista de fuente de la pgina.
6. Hacer clic con el botn derecho sobre el formulario en vista Diseo y
hacer clic en Propiedades.
7. En el cuadro de dilogo Pginas de propiedades, volver a establecer
Target Schema como Internet Explorer 5.0.
1. En el cuadro de dilogo Pginas de propiedades, seleccionar
FlowLayout (en lugar de GridLayout) en el campo Page Layout, y
hacer clic en Aceptar.
La cuadrcula desaparece.
2. Agregar un control Button al formulario Web, y visualizar la pgina en
vista HTML.
El nuevo botn no tiene un atributo style.
1. En la vista Diseo, agregar un control de servidor Web Calendar en el
formulario Web Form, y visualizar la pgina en vista HTML.
Localizar el cdigo HTML para el control Calendar:
<asp:Calendar id="Calendar1" runat="server"></asp:calendar>
2. Guardar los cambios y visualizar la pgina en el navegador y, a
continuacin, visualizar el cdigo fuente de la pgina.
Observar el HTML generado por el control Calendar.
3. Cerrar la vista de fuente de la pgina.
4. Editar la pgina WebForm1 y ver las propiedades del control Calendar
en la ventana Propiedades.
5. Hacer clic con el botn derecho en el control Calendar en el formulario
Web Form en la vista Diseo y seleccionar Formato automtico para
mostrar los diferentes estilos del cuadro de dilogo Formato automtico
de Calendar. Hacer clic en Colorful 1, y clic en Aceptar.
6. Guardar los cambios y visualizar la pgina de nuevo en el navegador para
ver el nuevo aspecto del control Calendar.
Cambiar el navegador
de destino
Cambiar la presentacin
de la pgina
Agregar un control
Calendar
1
Prctica A: Crear un formulario Web Formcon Microsoft
ASP.NET
Medical
Medical.aspx
Medical
Medical.aspx
Benefits
Home Page
Default.aspx
Benefits
Home Page
Default.aspx
Life Insurance
Life.aspx
Life Insurance
Life.aspx
Retirement
Retirement.aspx
Retirement
Retirement.aspx
Dental
Dental.aspx
Dental
Dental.aspx
Dentists
Doctors
Doctors.aspx
Doctors
Doctors.aspx
Doctors
Logon Page
Login.aspx
Logon Page
Login.aspx
Registration
Register.aspx
Registration
Register.aspx
Coho
Winery
Prospectus
Prospectus.aspx
Prospectus
Prospectus.aspx
XML Web
Service
dentalService1.asmx
XML Web
Service
dentalService1.asmx
Page Header
Header.ascx
Page Header
Header.ascx
ASPState
tempdb
LabWeb
Application
User Control
namedate.ascx
User Control
namedate.ascx
Menu
Component
Class1.vb or Class1.cs
Menu
Component
Class1.vb or Class1.cs
XML
Files
Web.
config
******************************
En este laboratorio, aprenderemos a:
Crear un formulario Web Form con MicrosoftASP.NET y poblarlo con
controles Web.
Establecer propiedades de los controles Web en un formulario Web Form
ASP.NET.
Este laboratorio se centra en los conceptos de este mdulo y, por ello,
podra no cumplir las recomendaciones de seguridad de Microsoft.
Para poder trabajar en este laboratorio, es necesario tener conocimientos sobre
el entorno de desarrollo integrado (IDE) de Microsoft Visual Studio .NET.
Coho Winery ofrece varios beneficios a sus empleados. En los laboratorios del
curso, crearemos un sitio Web que permita a los empleados seleccionar y
establecer los beneficios que elijan.
En el Laboratorio 2, Uso de Microsoft Visual Studio .NET, creamos una
solucin Visual Studio .NET y un proyecto de aplicacin Web para al
aplicacin Web Benefits.
En este laboratorio, crearemos la interfaz de usuario (IU) de las pginas de
formularios Web Form default.aspx y life.aspx en la aplicacin Web Benefits.
El formulario Web Form default.aspx es la pgina de inicio del sitio Web
Benefits. La pgina default.aspx muestra la lista de beneficios que ofrece la
compaa. La pgina life.aspx permite al usuario introducir informacin relativa
a su seguro de vida, como su nombre, fecha de nacimiento e importe de la
cobertura.
Objetivos
Nota
Requisitos previos
Escenario
Tiempo estimado para
realizar este laboratorio:
30 minutos
2
Ejercicio 0
Configuracin del laboratorio
Para realizar este laboratorio, es necesario haber creado el proyecto de
aplicacin Web denominado Benefits y un proyecto de biblioteca de clases
BenefitsList. Estos proyecto pueden crearse utilizando Visual Basic .NET o
Visual C#.NET.
Si no se han creado estos proyectos, seguir los siguientes pasos:
Crear la solucin LabApplication
Realizar este procedimiento nicamente si no se ha creado un
archivo de solucin LabApplication.
1. Utilizando Visual Studio .NET, crear una nueva solucin en blanco
denominada LabApplication:
En el men Archivo, seleccionar Nuevo, y hacer clic en Solucin en
blanco.
En el cuadro de dilogo Nuevo proyecto, escribir LabApplication en el
cuadro de texto Nombre y hacer clic en Aceptar.
Crear el proyecto Benefits
Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto Benefits, o si se ha eliminado.
1. Crear un nuevo proyecto de aplicacin Web ASP.NET, denominado
BenefitsVB o BenefitsCS, en la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual Basic o Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Aplicacin Web ASP.NET,
establecer la Ubicacin en http://localhost/BenefitsVB para un
proyecto Visual Basic .NET o en http://localhost/BenefitsCS para un
proyecto Visual C#.
d. Hacer clic en Agregar a Solucin, y hacer clic en Aceptar.
Cuando se agregan proyectos a la solucin, es importante el
uso de maysculas en el nombre del proyecto. Probablemente, utilizaremos
algunos formularios Web Forms ya generados en ste y en otros
laboratorios, por ello, debemos verificar que hemos escrito en maysculas el
nombre del proyecto Benefits.
Importante
Importante
Precaucin
3
Actualizar el proyecto Benefits
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsVB o BenefitsCS, seleccionar Agregar, y hacer clic en Agregar
elemento existente.
3. Buscar los archivos de proyecto
Ir a la carpeta VB\Starter\BenefitsVB.
Ir a la carpeta CS\Starter\BenefitsCS.
Estas carpetas se pueden encontrar dentro del fichero labs03.zip.
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente Benefits, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de sobrescribir o cargar de nuevo los archivos.
Crear la biblioteca de clases BenefitsList
Realizar estos pasos nicamente si no se ha creado anteriormente
un proyecto BenefitsList, o si se ha eliminado.
Crear un proyecto de biblioteca de clases
Crear un nuevo proyecto de biblioteca de clases Microsoft
Visual Basic .NET con el nombre BenefitsListVB, y aadirlo a la solucin
LabApplication:
En el men Archivo, seleccionar Nuevo, y hacer clic en Proyecto.
En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual Basic. En la lista Plantillas, hacer
clic en Biblioteca de clases, establecer el Nombre de BenefitsListVB,
hacer clic en Agregar a solucin, y clic en Aceptar.
Crear un nuevo proyecto de biblioteca de clases Microsoft Visual C#
.NET con el nombre BenefitsListCS, y aadirlo a la solucin
LabApplication:
a. En el men Archivo, hacer clic en Nuevo, y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual C#. En la lista Plantillas, hacer clic
en Biblioteca de clases, establecer el Nombre de BenefitsListCS, hacer
clic en Agregar a solucin, y clic en Aceptar.
Verificar que se han escrito correctamente las maysculas del
proyecto BenefitsList.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Importante
Para un proyecto Visual
Basic .NET
Para un proyecto Visual
C#
Precaucin
4
Actualizar el proyecto BenefitsList
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
3. Buscar los archivos de proyecto:
Ir a la carpeta VB\Starter\BenefitsListVB.
Ir a la carpeta CS\Starter\BenefitsListCS.
Estas carpetas se pueden encontrar dentro del fichero labs03.zip.
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente BenefitsList, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de esta carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de sobrescribir o cargar de nuevo los archivos.
Crear una referencia al componente BenefitsList en el proyecto Benefits
1. En el proyecto Benefits de la solucin LabApplication, completar los
siguientes pasos para agregar una referencia al componente BenefitsList
que acabamos de crear:
a. Hacer clic con el botn derecho en el proyecto BenefitsVB o
BenefitsCS en el Explorador de soluciones y hacer clic en Agregar
referencia.
b. En el cuadro de dilogo Agregar referencia, en la pestaa Proyectos,
hacer doble clic en el proyecto BenefitsListVB o BenefitsListCS.
c. En la lista Componentes seleccionados, seleccionar el componente
BenefitsListVB o BenefitsListCS, y hacer clic en Aceptar.
El componente se agrega a la carpeta Referencias del Explorador de
soluciones.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
5
Ejercicio 1
Crear el formulario Web FormDefault.aspx
En este ejercicio, crearemos un nuevo formulario Web Form denominado
default.aspx. A continuacin, agregaremos un control de usuario, un control
enlazado a lista, un control Button, y un control Label a la pgina default.aspx.
Finalmente, estableceremos atributos del control enlazado a lista para mostrar
una lista esttica de informacin.
Colocar controles en un formulario Web Form
1. Crear un nuevo Web Form denominado default.aspx. Este formulario Web
Form ser la pgina de entrada principal de nuestra aplicacin Web. Para
crear el formulario Web Form:
a. Hacer clic con el botn derecho en el proyecto BenefitsVB o
BenefitsCS, seleccionar Agregar y hacer clic en Agregar Web Form.
b. En el cuadro de dilogo Agregar nuevo elemento, escribir default.aspx
en el campo Nombre y hacer clic en Abrir.
2. Desde el Explorador de soluciones, utilizar una operacin de arrastrar y
soltar para ubicar el archivo header.ascx desde el Explorador de soluciones
a la parte superior del formulario Web Form.
Estudiaremos con mayor profundidad los controles de usuario en el
Mdulo Crear controles de usuario.
3. Desde el Cuadro de herramientas, arrastrar un control CheckBoxList, un
control Button, y un control Label al formulario Web Form. El formulario
Web Form debera tener un aspecto similar a la siguiente ilustracin.
4. Establecer las propiedades ID y Text para los controles CheckBoxList,
Button y Label como se muestra en la siguiente tabla.
Control ID Text
CheckBoxList chkListBenefits Ninguno
Button cmdSubmit Submit
Label lblSelections Selected items:
5. Visualizar la pgina en la vista Hypertext Markup Language (HTML)
haciendo clic en la ficha HTML situada en la parte inferior derecha de la
ventana del editor.
Nota
6
Visual Studio .NET ha aadido el HTML dinmico (DHTML) a los
controles CheckBoxList, Button, y Label. El atributo style que contiene
los parmetros Z-INDEX, LEFT, POSITION y TOP posiciona los
controles en la pgina.
6. Hacer clic con el botn derecho en la pgina default.aspx del Explorador de
soluciones y hacer clic en Ver en el explorador.
El proyecto debe generarse aunque no hayamos escrito cdigo. Esto
se debe a que cuando agregamos componentes de interfaz de usuario a la
pgina, Visual Studio .NET genera cdigo para soportar estos elementos.
La pgina debera tener un aspecto similar al de la ilustracin, sin ningn
contenido en el control CheckBoxList.
Agregar elementos al control CheckBoxList
1. Visualizar la pgina default.aspx en la vista Diseo.
2. Hacer clic en el control CheckBoxList chkListBenefits del formulario
Web Form default.aspx.
3. En la ventana Propiedades, hacer clic en la propiedad Items y hacer clic en
el botn para abrir el cuadro de dilogo ListItem Collection Editor.
4. En el cuadro de dilogo ListItem Collection Editor, agregar los elementos
que se muestran en la siguiente tabla (con la propiedad Selected establecida
en False).
Texto Valor
First Item First Item
Second Item Second Item
Third Item Third Item
5. Hacer clic en Aceptar para cerrar el cuadro de dilogo ListItem Collection
Editor.
6. Guardar los cambios a default.aspx y visualizar la pgina en el navegador.
Ahora que hemos agregado elementos al control CheckBoxList, la lista de
elementos sobrescribe el botn Submit.
7. Visualizar de nuevo la pgina default.aspx en la vista Diseo.
8. Hacer clic en el fondo de la pgina default.aspx, y en la ventana
Propiedades, establecer la propiedad pageLayout en FlowLayout (en lugar
de GridLayout).
Nota
7
Aunque FlowLayout hace que el diseo de la pgina sea un poco ms
difcil, permite que los elementos de interfaz de usuario se muevan
automticamente cuando otros elementos de la pgina cambian de tamao.
Por ejemplo, cuando el control chkListBenefits tena ms elementos
agregados a la lista, se sobrescribi el botn Submit. Utilizando
FlowLayout, el botn se mover automticamente para dejar espacio para
una lista ms larga.
9. Mover los controles en la pgina, utilizando retornos de carro, para que la
pgina tenga un aspecto similar al de la siguiente ilustracin.
10. Visualizar de nuevo la pgina en el explorador.
Ahora la lista de casillas de verificacin no sobrescribe el botn Submit.
11. Cerrar la ventana del explorador.
8
Ejercicio 2
Crear el formulario Web FormLife.aspx
En este ejercicio, crearemos la interfaz de usuario de la pgina life.aspx. Esta
pgina implementa el beneficio de seguro de vida de la compaa.
Agregar controles a la pgina life.aspx
1. Crear un nuevo formulario Web Form denominado life.aspx. Para crear el
formulario Web Form:
a. Hacer clic con el botn derecho en el proyecto BenefitsVB o
BenefitsCS, seleccionar Agregar y hacer clic en Agregar Web Form.
b. En el cuadro de dilogo Agregar nuevo elemento, escribir life.aspx en
el campo Nombre y hacer clic en Abrir.
2. Ubicar un control Calendar en el formulario Web Form.
3. Hacer clic con el botn derecho en el control Calendar en la vista Diseo y
seleccionar Formato automtico para abrir el cuadro de dilogo Formato
automtico de Calendar.
4. Hacer clic en Colorful 1 en la lista Seleccionar un esquema, y hacer clic
en Aceptar.
5. Situar el control de usuario header.ascx, tres controles TextBox, dos
controles CheckBox, un control Button, y cinco controles Label en la
pgina.
9
6. Establecer las propiedades ID y Text de cada control como se muestra en la
siguiente tabla.
Control ID Texto
Cuadro de texto Name txtName ninguno
Cuadro de texto Birth
date
txtBirth ninguno
Cuadro de texto
Coverage
txtCoverage ninguno
Casilla de verificacin
Short-term disability
chkShortTerm Short-term disability
Casilla de verificacin
Long-term disability
chkLongTerm Long-term disability
Botn Save cmdSave Save
Label1 default Life Insurance
Application
Label2 default Proof of good health
appointment
Label3 default Name:
Label4 default Birth Date:
Label5 default Coverage:
Cambiar el tamao de la fuente de Label1, en la ventana Propiedades de
la etiqueta, expandir Fuente, seleccionar Tamao, y elegir Grande.
7. Hacer clic con el botn derecho en la pgina life.aspx del Explorador de
soluciones y hacer clic en Ver en el explorador.
8. Escribir el nombre y fecha de nacimiento en los campos y hacer clic en
Guardar. Los valores introducidos deberan permanecer en la pgina.
Nota
ndice
Descripcin 1
Leccin: uso de las pginas de cdigo
subyacente 2
Leccin: agregar procedimientos de evento a
controles de servidor Web 9
Leccin: uso de eventos de pgina 22
Agregar cdigo a un formulario Web
Form con Microsoft ASP.NET
Agregar cdigo a un formulario Web Formcon Microsoft ASP.NET 1
Descripcin
Uso de las pginas decdigo subyacente
Agregar procedimientos de evento a controles de
servidor Web
Uso de eventos de pgina
***************************** use******************************
En este mdulo, estudiaremos los distintos mtodos que pueden utilizarse para
agregar cdigo a nuestra aplicacin Web con MicrosoftASP.NET. Tambin
estudiaremos los procedimientos de evento para los controles de servidor Web,
cmo utilizarlos y el orden en que funcionan. Estudiaremos el uso de las pginas
de cdigo subyacente, que son el mtodo preferido de Microsoft Visual Studio
.NET para agregar cdigo a pginas Web. Finamente, estudiaremos cmo se
utilizan los eventos de pgina, en particular al evento Page_Load.
En este mdulo, aprenderemos a:
Utilizar pginas de cdigo subyacente en una aplicacin Web.
Crear procedimientos de evento para controles de servidor Web.
Utilizar eventos de pgina en una aplicacin Web.
Introduccin
Objetivos
2 Agregar cdigo a un formulario Web Formcon Microsoft ASP.NET
Leccin: uso de las pginas de cdigo subyacente
Cmo implementar cdigo
Escribir cdigo en lnea
Quson las pginas de cdigo subyacente?
Entender cmo funcionan las pginas de cdigo
subyacente
***************************** use******************************
En esta leccin, estudiaremos cmo implementar cdigo con Visual Studio .NET.
Tambin estudiaremos cmo se utilizan las pginas de cdigo subyacente y en
qu se diferencian del cdigo en lnea.
En esta leccin, aprenderemos a:
Identificar tres formas de implementar cdigo en un formulario Web Form
ASP.NET.
Utilizar las pginas de cdigo subyacente.
Introduccin
Objetivos de la leccin
Agregar cdigo a un formulario Web Formcon Microsoft ASP.NET 3
Cmo implementar cdigo
Tres mtodos para agregar cdigo:
Ubicar el cdigo en el mismo archivo que el contenido
(mezclado)
Ubicar el cdigo en una seccin distinta del archivo de
contenido (cdigo en lnea )
Ubicar el cdigo en un archivo distinto (pginas de
cdigo subyacente)
Las pginas de cdigo subyacente son el mtodo
predeterminado de Visual Studio .NET
***************************** use******************************
Podemos agregar cdigo a nuestro formulario Web Form de los siguientes
modos:
Cdigo mezclado. El cdigo se encuentra en el mismo archivo que el
contenido Web, entremezclado con el contenido Hypertext Markup Language
(HTML). Este mtodo es el menos elegido, ya que es difcil leer y trabajar
con un archivo de este tipo. Sin embargo, es un mtodo utilizado con
frecuencia en pginas Active Server Pages (ASP).
Cdigo en lnea. El cdigo se encuentra en el mismo archivo en una seccin
SCRIPT distinta, al igual que el contenido HTML.
Cdigo subyacente. El cdigo se encuentra en un archivo distinto del
contenido HTML. El archivo de cdigo se denomina pgina de cdigo
subyacente. Cuando se utiliza Visual Studio .NET, el mtodo predeterminado
es ubicar todo el cdigo en una pgina de cdigo subyacente.
Implementar cdigo
4 Agregar cdigo a un formulario Web Formcon Microsoft ASP.NET
Escribir cdigo en lnea
Cdigo y contenido en el mismo archivo
Distintas secciones en el archivo para el cdigo y HTML
<HTML>
<asp:Button id="btn" runat="server"/>
</HTML>
<SCRIPT Language="vb" runat="server">
Sub btn_Click(s As Object, e As EventArgs) Handles btn.Click
...
End Sub
</SCRIPT>
<HTML>
<asp:Button id="btn" runat="server"/>
</HTML>
<SCRIPT Language="vb" runat="server">
Sub btn_Click(s As Object, e As EventArgs) Handles btn.Click
...
End Sub
</SCRIPT>
<HTML>
<asp:Button id="btn" runat="server"/>
</HTML>
<SCRIPT Language="c#" runat="server">
private void btn_Click(object sender, System.EventArgs e)
{
. . .
}
</SCRIPT>
<HTML>
<asp:Button id="btn" runat="server"/>
</HTML>
<SCRIPT Language="c#" runat="server">
private void btn_Click(object sender, System.EventArgs e)
{
. . .
}
</SCRIPT>
***************************** use******************************
Aunque el mtodo predeterminado para implementar cdigo en el lado del
servidor en Visual Studio .NET es utilizar una pgina de cdigo subyacente,
podemos encontrar pginas que utilizan cdigo en lnea, concretamente pginas
ASP.
Cuando se utiliza cdigo en lnea en una pgina Web, el HTML y el cdigo se
encuentran en secciones distintas de un nico archivo .aspx. Esta separacin se
produce para ofrecer claridad en la lectura de la pgina; la funcionalidad, el
cdigo y HTML pueden coexistir en cualquier lugar de la pgina.
El siguiente cdigo es un ejemplo de cdigo en lnea:
<HTML>
<asp:Button id="btn" runat="server"/>
...
</HTML>
<SCRIPT Language="vb" runat="server">
Sub btn_Click(s As Object, e As EventArgs) _
Handles btn.Click
...
End Sub
</SCRIPT>
Introduccin
Cdigo en lnea
Visual Basic .NET
C#
Agregar cdigo a un formulario Web Formcon Microsoft ASP.NET 5
<HTML>
<asp:Button id="btn" runat="server" />
...
</HTML>
<SCRIPT Language="c#" runat="server">
private void btn_Click(object sender, System.EventArgs e)
{
. . .
}
</SCRIPT>
6 Agregar cdigo a un formulario Web Formcon Microsoft ASP.NET
Qu son las pginas de cdigo subyacente?
Separacin de cdigo y contenido
Los desarrolladores y los diseadores de la interfaz de
usuario pueden trabajar independientemente
Form1.aspx Form1.aspx Form1.aspx Form1.aspx Form1.aspx.vb Form1.aspx.vb
o Form1.aspx.cs o Form1.aspx.cs
<tags>
<tags> c c digo digo
c c digo digo
Archivos distintos Un archivo
***************************** use******************************
El mtodo predeterminado para implementar cdigo en el lado del servidor en
Visual Studio .NET es utilizar pginas de cdigo subyacente. Cuando utilizamos
pginas de cdigo subyacente, la lgica de programacin se encuentra en un
archivo distinto de los elementos visuales de la pgina. Separar la lgica del
diseo permite a los desarrolladores trabajar en la pgina de cdigo subyacente
mientras los diseadores de la interfaz de usuario (IU) trabajan en la pgina
ASP.NET.
Las pginas de cdigo subyacente contienen toda la lgica de programacin para
una sola pgina Web. Cada pgina de una aplicacin Web tiene su propia pgina
de cdigo subyacente. De forma predeterminada, una pgina de cdigo
subyacente tiene el mismo nombre que la pgina Web a la que est asociada; sin
embargo, la pgina de cdigo subyacente tambin tiene una extensin .aspx.vb o
.aspx.cs, dependiendo del lenguaje utilizado en la pgina de cdigo subyacente.
Por ejemplo la pgina Web Form1.aspx tendr una pgina de cdigo subyacente
Microsoft Visual Basic .NET denominada Form1.aspx.vb o una pgina de
cdigo subyacente C#denominada Form1.aspx.cs.
Una pgina de cdigo subyacente nicamente puede contener cdigo en un
slo lenguaje. No podemos mezclar Visual Basic .NET y C#en una misma
pgina de cdigo subyacente.
Introduccin
Poner nombre a las
pginas de cdigo
subyacente
Nota
Agregar cdigo a un formulario Web Formcon Microsoft ASP.NET 7
Cmo funcionan las pginas de cdigo subyacente
Crean archivos distintos para la interfaz de usuario y la
lgica de la interfaz
Utilizan la directiva @ Page para enlazar los dos archivos
Pre-compilacin o compilacin JIT
Page1.aspx
<% @ Page Language="c#"
Inherits="Project.WebForm1"
Codebehind="Page1.aspx.cs"
Src = "Page1.aspx.cs" %>
Page1.aspx.cs
public class WebForm1
{
private void cmd1_Click()
{
}
}
***************************** use******************************
Para que las pginas de cdigo subyacente funcionen, cada pgina .aspx debe
estar asociada a una pgina de cdigo subyacente, y esa pgina de cdigo
subyacente debe estar compilada antes de que la informacin se enve de vuelta a
un navegador cliente que la solicite.
Aunque cada pgina Web Form est formada por dos archivos distintos (la
pgina .aspx y la pgina de cdigo subyacente), ambos archivos forman una
nica unidad cuando se ejecuta la aplicacin Web. La pgina de cdigo
subyacente puede ser precompilada por Visual Studio .NET cuando generamos el
proyecto de aplicacin Web, o puede ser compilada just-in-time (J IT) la primera
vez que un usuario accede a la pgina.
La pgina .aspx debe estar asociada a la pgina de cdigo subyacente.
Visual Studio .NET agrega los tres atributos siguientes a la directiva @ Page de
la pgina .aspx para conseguir esta asociacin:
Codebehind. Es el atributo que Visual Studio .NET utiliza internamente para
asociar los archivos.
Src. Este atributo es el nombre de la pgina de cdigo subyacente, y se utiliza
si la aplicacin Web no est precompilada.
Inherits. Este atributo permite a la pgina .aspx heredar clases y objetos de la
pgina de cdigo subyacente.
El atributo Inherits es sensible a maysculas.
Introduccin
Enlazar los dos archivos
Nota
8 Agregar cdigo a un formulario Web Formcon Microsoft ASP.NET
El siguiente cdigo muestra un ejemplo de directiva @ Page para un archivo
denominado Page1.aspx:
<%@ Page Language="vb" Inherits="Project.WebForm1"
Codebehind="Page1.aspx.vb" Src="Page1.aspx.vb" %>
<%@ Page Language="c#" Inherits="Project.WebForm1"
Codebehind="Page1.aspx.cs" Src="Page1.aspx.cs" %>
Cuando una pgina est compilada J IT, las pginas de cdigo subyacente se
compilan la primera vez que un cliente solicita la pgina .aspx. Tras la primera
peticin, las siguientes utilizan el archivo compilado existente. Por tanto, la
primera peticin de una pgina dura ms, pero las siguientes peticiones son ms
rpidas.
Si se desea utilizar la compilacin J IT para una pgina, debera utilizarse el
atributo Src de la directiva@ Page.
La compilacin J IT mantendr el tamao del proyecto pequeo y permitir
actualizaciones de cdigo sin recompilar todo el sitio.
Cuando un usuario solicita la pgina .aspx, el archivo DLL procesa la peticin
entrante y responde creando el cdigo HTML y el scripting adecuados y
devolvindolos al navegador solicitante.
Si omitimos el atributo Src de la directiva @ Page en un archivo .aspx, la pgina
se precompila cuando generamos la aplicacin en Visual Studio .NET. De modo
predeterminado, Visual Studio .NET no agrega el atributo Src; por ello, todas las
pginas de cdigo subyacente en los formularios Web Forms de un proyecto se
compilan cuando se genera el proyecto. Este proceso ahorra un tiempo
considerable de proceso en el servidor Web.
Precompilar pginas de cdigo subyacente tambin simplifica la implantacin del
sitio Web ya que no es necesario implantar las pginas de cdigo subyacente
junto con las pginas .aspx.
Para ms informacin sobre la implementacin de sitios Web, consultar el
Mdulo Configurar, optimizar e implementar una aplicacin Web con Microsoft
ASP.NET.
Visual Basic .NET
C#
Compilacin JIT
Nota
Ejecucin
Precompilacin
Nota
Agregar cdigo a un formulario Web Formcon Microsoft ASP.NET 9
Leccin: agregar procedimientos de evento a controles de
servidor Web
Quson los procedimientos de evento?
Demostracin: uso de eventos
Procedimientos de evento en el lado del cliente
Procedimientos de evento en el lado del servidor
Multimedia: eventos en el lado del cliente y en el lado
del servidor
Crear procedimientos de evento
Prctica dirigida por el profesor: crear un
procedimiento de evento
Interactuar con controles en procedimientos de evento
***************************** use******************************
En esta leccin, estudiaremos los procedimientos de evento y cmo agregarlos a
los controles de servidor Web. Aprenderemos a distinguir entre los dos tipos de
eventos (en el lado del servidor y en el lado del cliente) y a saber cundo resulta
apropiado utilizar cada uno.
En esta leccin, aprenderemos a:
Identificar procedimientos de evento.
Distinguir entre eventos en el lado del servidor y en el lado del cliente.
Crear un procedimiento de evento en el lado del servidor.
Interactuar con controles en procedimientos de evento.
Introduccin
Objetivos de la leccin
10 Agregar cdigo a un formulario Web Formcon Microsoft ASP.NET
Qu son los procedimientos de evento?
Acciones en respuesta a la interaccin de un usuario
con los controles de la pgina
***************************** use******************************
Los formularios Web Forms dinmicos e interactivos normalmente reaccionan a
la entrada de datos del usuario. Los procedimientos de evento se utilizan para
gestionar las interacciones de los usuarios en un formulario Web Form.
Cuando un usuario interacta con un formulario Web Form, se genera un evento.
Diseamos nuestra aplicacin Web para realizar una determinada tarea cuando se
genera el evento. Un procedimiento de evento es la accin que ocurre en
respuesta al evento generado.
Muchos formularios Web Forms permiten al usuario introducir informacin y
hacer clic en un botn Enviar. Se genera un evento cuando el usuario hace clic
en el botn Enviar. Por ejemplo, un procedimiento de evento podra ser enviar la
informacin del usuario a una base de datos Microsoft SQL Server
.
Introduccin
Definicin
Ejemplo de un
procedimiento de
evento
Agregar cdigo a un formulario Web Formcon Microsoft ASP.NET 11
Demostracin: uso de eventos
Abrir una pgina ASP.NET con controles
y procedimientos de evento en el lado del
cliente y en el lado del servidor
Hacer clic en los controles para visualizar
la ejecucin de los eventos en el lado del
cliente y en el lado del servidor
En el explorador, visualizar el cdigo
fuente de la pgina
En el editor, visualizar el cdigo del
procedimiento de evento
***************************** use******************************
Esta demostracin puede realizarse utilizando un proyecto Visual Basic .NET o
Microsoft Visual C#
.NET.
Si no se han creado estos proyectos, realizar los siguientes pasos.
Crear la solucin LabApplication
Realizar este procedimiento nicamente si no se ha creado un
archivo de solucin LabApplication.
Utilizando Visual Studio .NET, crear una nueva solucin en blanco
denominada LabApplication:
En el men Archivo, seleccionar Nuevo, y hacer clic en Solucin en
blanco.
En el cuadro de dilogo Nuevo proyecto, escribir LabApplication en el
cuadro de texto Nombre y hacer clic en Aceptar.
Crear el proyecto Benefits
Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto Benefits, o si se ha eliminado.
Crear un nuevo proyecto de aplicacin Web ASP.NET, denominado
BenefitsVB o BenefitsCS, en la solucin LabApplication:
En el men Archivo, seleccionar Nuevo, y hacer clic en Proyecto.
En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual Basic o Proyectos de Visual C#.
En la lista Plantillas, hacer clic en Aplicacin Web ASP.NET,
establecer la Ubicacin en http://localhost/BenefitsVB para un
proyecto Visual Basic .NET o en http://localhost/BenefitsCS para un
proyecto Visual C#.
Hacer clic en Agregar a Solucin, y hacer clic en Aceptar.
Cuando se agregan proyectos a la solucin, es importante el
uso de maysculas en el nombre del proyecto. Probablemente, utilizaremos
algunos formularios Web Forms ya generados en ste y en otros
laboratorios, por ello, debemos verificar que hemos escrito con maysculas
el nombre del proyecto Benefits.
Importante
Importante
Precaucin
Actualizar el proyecto Benefits
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsVB o BenefitsCS, seleccionar Agregar, y hacer clic en Agregar
elemento existente.
Ir a la carpeta VB\Starter\BenefitsVB
Ir a la carpeta CS\Starter\BenefitsCS
Estas carpetas pueden encontrarse dentro del fichero labs06.zip
1. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente Benefits, hacer clic en Todos los archivos (*.*).
2. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
3. Hacer clic en S a la pregunta de si sobrescribir o recargar los archivos.
Crear la biblioteca de clases BenefitsList
Realizar estos pasos nicamente si no se ha creado anteriormente
un proyecto BenefitsList, o si se ha eliminado.
1. Crear un proyecto de biblioteca de clases.
Crear un nuevo proyecto de biblioteca de clases Visual Basic .NET con el
nombre BenefitsListVB y aadirlo a la solucin LabApplication:
En el men Archivo, seleccionar Nuevo, y hacer clic en Proyecto.
En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual Basic.
En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListVB.
Hacer clic en Agregar a solucin, y clic en Aceptar.
Crear un nuevo proyecto de biblioteca de clases Visual C#.NET con el
nombreBenefitsListCS y aadirlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListCS.
d. Hacer clic en Agregar a solucin, y clic en Aceptar.
Verificar que se han escrito correctamente las maysculas del
proyecto BenefitsList.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Importante
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Importante
Actualizar el proyecto BenefitsList
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
3. Ir al proyecto BenefitsList.
Ir a la carpeta VB\Starter\BenefitsListVB.
Ir a la carpeta CS\Starter\BenefitsListCS.
Estas carpetas pueden encontrarse dentro del fichero labs06.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente BenefitsList, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de si sobrescribir o recargar los archivos.
Crear una referencia al componente BenefitsList del proyecto Benefits
1. En el proyecto Benefits de la solucin LabApplication, completar los
siguientes pasos para agregar una referencia al componente BenefitsList
que acabamos de crear:
a. Hacer clic con el botn derecho en el proyecto BenefitsVB o
BenefitsCS en el Explorador de soluciones y hacer clic en Agregar
referencia.
b. En el cuadro de dilogo Agregar referencia, en la pestaa Proyectos,
hacer doble clic en el proyecto BenefitsListVB o BenefitsListCS.
c. En la lista Componentes seleccionados, seleccionar el componente
BenefitsListVB o BenefitsListCS, y hacer clic en Aceptar.
El componente se agrega a la carpeta Referencias en el Explorador de
soluciones.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Ejercicio 1
Uso de los controles RequiredFieldValidator
En este ejercicio, agregaremos controles RequiredFieldValidator para los
cuadros de texto Name, Birth Date y Coverage del formulario Web Form
ASP.NET life.aspx.
Agregar controles RequiredFieldValidator
1. Abrir la pgina life.aspx en el proyecto Benefits de la solucin
LabApplication.
2. Mediante una operacin de arrastrar y soltar, ubicar tres controles
RequiredFieldValidator en el formulario Web Form de forma que el
formulario tenga un aspecto similar a la siguiente ilustracin.
3. Establecer las propiedades de los tres controles RequiredFieldValidator
utilizando los valores que se muestran en la siguiente tabla.
ID Mensaje de error Texto ControlToValidate
vldName El Nombre no puede dejarse
en blanco
* txtName
vldBirth La Fecha de nacimiento no
puede dejarse en blanco
* txtBirth
vldCoverage La cobertura no puede dejarse
en blanco
* txtCoverage
Cuando cambiamos la propiedad Text de los controles, cambiamos el texto
que aparece en la vista Diseo. La pgina debera tener ahora un aspecto
similar a la siguiente ilustracin.
4. Generar y examinar la pgina life.aspx.
5. En el explorador, dejar los campos Name, Birth Date y Coverage en
blanco y hacer clic en Guardar.
Qu ocurre y por qu?
____________________________________________________________
____________________________________________________________
6. En el explorador, introducir los valores para los campos Name, Birth Date
y Coverage y hacer clic en Guardar.
Qu ocurre y por qu?
____________________________________________________________
____________________________________________________________
Ejercicio 2
Uso del control ValidationSummary
En este ejercicio, utilizaremos un control ValidationSummary para hacer un
resumen de los errores de validacin de la pgina life.aspx.
Agregar un control ValidationSummary a la pgina life.aspx
1. Mediante una operacin de arrastrar y soltar, ubicar un control
ValidationSummary en la parte inferior del formulario Web Form life.aspx
y establecer su propiedad ID en vldSummary.
2. Establecer la propiedad HeaderText del control vldSummary en el valor
These errors were found
El aspecto de la pgina debera ser similar al de la siguiente ilustracin.
3. Generar y examinar la pgina life.aspx.
4. En el explorador, dejar en blanco los campos Name, Birth Date y
Coverage y hacer clic en Guardar.
Adems del asterisco rojo que aparece junto a las entradas no vlidas,
deberamos ver un resumen de errores en la parte inferior de la pgina.
5. De dnde proviene el resumen de mensajes de error?
____________________________________________________________
____________________________________________________________
Probar si la pgina es vlida
1. Agregar un control Label en la parte inferior del formulario Web Form,
establecer la propiedad ID del control en lblMessage y borrar el valor
predeterminado de su propiedad Text.
El aspecto de la pgina debera ser similar al de la siguiente ilustracin.
2. Abrir el procedimiento de evento Click para el botn Guardar.
3. Modificar el cdigo del procedimiento de evento para probar si los controles
de la pgina son vlidos y, si lo son, escribir un mensaje en el control
lblMessage indicando que la pgina es vlida.
El cdigo debera ser como el siguiente:
If Page.IsValid Then
lblMessage.Text = "La pgina es vlida"
End If
if (Page.IsValid)
{
lblMessage.Text = "La pgina es vlida";
}
4. Generar y examinar la pgina life.aspx.
5. En el explorador, introducir valores para los campos Name, Birth Date y
Coverage y hacer clic en Guardar.
Verificar que aparece el mensaje La pgina es vlida.
Visual Basic .NET
C#
Ejercicio 3
Uso del control CompareValidator
En este ejercicio, utilizaremos un control CompareValidator para validar la
entrada del usuario en el campo de texto Fecha de nacimiento.
Agregar un control CompareValidator
1. Mediante una operacin de arrastrar y soltar, ubicar un control
CompareValidator en el formulario Web Form life.aspx, junto al control
vldBirth RequiredFieldValidator.
2. Establecer las propiedades del control CompareValidator como se muestra
en la siguiente tabla.
Propiedad Valor
ErrorMessage El valor de Fecha de nacimiento no es vlido
Text *
ControlToValidate txtBirth
Operator DataTypeCheck
Type Date
ID vldBirthType
El aspecto de la pgina debera ser similar al de la siguiente ilustracin.
3. Generar y examinar la pgina life.aspx.
4. Introducir una fecha no vlida, como 14/3/02 (el mes 14 es incorrecto), en el
campo Birth Date y hacer clic en Guardar.
Debera aparecer el asterisco rojo junto al campo Birth Date.
5. Introducir una fecha vlida, como s 12/3/02, en el campo Birth Date y
hacer clic en Guardar.
El asterisco rojo junto al campo Birth Date debera desaparecer.
Ejercicio 4
Uso del control RegularExpressionValidator
En este ejercicio, utilizaremos un control RegularExpressionValidator para
validar la entrada del usuario en el campo de texto Coverage.
Agregar un control RegularExpressionValidator
1. Mediante una operacin de arrastrar y soltar, colocar un control
RegularExpressionValidator en el formulario Web Form life.aspx, junto
al control vldCoverage RequiredFieldValidator.
2. Establecer las propiedades del control como muestra la siguiente tabla.
Propiedad Valor
ErrorMessage La Cobertura debe tener un valor de tipo moneda
Text *
ControlToValidate txtCoverage
ValidationExpression \ d +( \ . \ d { 2 } ) ?
ID vldCoverageType
El aspecto de la pgina debera ser similar al de la siguiente ilustracin.
3. Cules son las entradas vlidas para el campo Coverage?
____________________________________________________________
____________________________________________________________
4. Generar y examinar la pgina life.aspx.
5. Introducir un valor incorrecto, como 333.3, en el campo Coverage y hacer
clic en Guardar.
Debera aparecer el asterisco rojo junto al campo Coverage.
6. Introducir un valor correcto, como 3.33, en el campo Coverage y hacer clic
en Guardar.
El asterisco rojo junto al campo Coverage debera desaparecer.
ndice
Descripcin 1
Leccin: Descripcin de la validacin de
entrada de datos del usuario 2
Leccin: uso de los controles de validacin 8
Leccin: validacin de pginas 30
Validacin de entrada de datos de
usuario
Validacin de entrada de datos de usuario 1
Descripcin
Descripcin de la validacin de entrada de datos de
usuario
Uso de controles de validacin
Validacin de pginas
***************************** use******************************
Al crear un control de entrada de datos, como un control TextBox, podemos
tener ciertas expectativas del tipo de entrada que el usuario introducir en ese
control. Una entrada de datos incorrecta, como mnimo, retrasar al usuario, y
puede incluso terminar nuestra aplicacin Web. Para verificar que la entrada de
datos cumple nuestras expectativas, debemos compararlo con el valor, intervalo
o formato que esperamos recibir del usuario. Para crear esta comprobacin,
enlazamos al menos un control de validacin de entrada de datos con el control
de entrada de datos y comparamos la entrada de datos de los usuarios con
nuestras expectativas.
En este mdulo, estudiaremos los controles de validacin de entrada de datos
disponibles en MicrosoftASP.NET. Tambin estudiaremos cmo aplicar de
forma eficaz estos controles a un formulario Web Form con ASP.NET
utilizando Microsoft Visual Studio .NET.
En este mdulo, aprenderemos a:
Identificar cundo es apropiada la validacin de entrada de datos en los
formularios Web Forms.
Utilizar controles de validacin de entrada de datos para verificar los datos
introducidos por el usuario en un formulario Web Form.
Verificar que todos los controles de validacin de una pgina son vlidos.
Introduccin
Objetivos
2 Validacin de entrada de datos de usuario
Leccin: validacin de entrada de datos del usuario
Ques es la validacin de entrada de datos?
Validacin del lado del cliente y del lado del servidor
Controles de validacin ASP.NET
***************************** use******************************
En esta leccin, estudiaremos cmo la validacin de entrada de datos verifica
que el usuario ha cumplimentado correctamente los controles de entrada de
datos en un formulario Web Form, antes de que una peticin sea procesada en
el servidor. Tambin estudiaremos los tipos de controles de validacin de
entrada de datos disponibles en ASP.NET.
En esta leccin, aprenderemos a:
Explicar el concepto de validacin.
Explicar la diferencia entre validacin del lado del cliente y validacin del
lado del servidor.
Combinar los tipos apropiados de controles de validacin ASP.NET para
determinados requerimientos de entrada.
Introduccin
Objetivos de la leccin
Validacin de entrada de datos de usuario 3
Qu es la validacin de entrada de datos?
Verifica que el usuario ha introducido correctamente el
valor de un control
Bloquea el procesamiento de una pgina hasta que
todos los controles son vlidos
Evita el spoofing
o aadir
cdigo mal
intencionado
***************************** use******************************
La validacin de entrada de datos es el proceso de verificar que la entrada de
datos de un usuario en un formulario Web Form concuerda con el valor,
intervalo o formato de datos previsto. La validacin de la entrada de datos
mejora la experiencia del usuario en el sitio Web reduciendo el tiempo de
espera de mensajes de error y la probabilidad de envos incorrectos o cadas del
sitio Web debido a problemas con la entrada de datos del usuario. Cuando se
combinan con mensajes de error comprensibles y tiles, los controles de
validacin de entrada de datos pueden mejorar enormemente el uso de una
aplicacin Web, mejorando por tanto la percepcin de usuario de la calidad
global del sitio Web.
Los controles de validacin de entrada de datos actan para verificar que el
usuario ha cumplimentado correctamente un control de entrada de datos, como
un control TextBox, antes de que la solicitud sea procesada en el servidor. Los
controles de validacin de entrada de datos de un formulario Web Form actan
como filtros de datos antes de que la pgina o la lgica de servidor sea
procesada.
En ASP.NET, la validacin de entrada de datos siempre se ejecuta en el lado
del servidor, y puede ejecutarse en el lado del cliente si el navegador cliente
soporta la validacin. Si el navegador soporta la validacin del lado del cliente,
los controles de validacin de entrada de datos realizan la comprobacin de
errores en el cliente antes de enviar los datos al servidor. El usuario recibe
informacin inmediata sobre si los datos que ha introducido son vlidos o no.
Por motivos de seguridad, toda validacin de entrada de datos que se ejecute en
el lado del cliente se repite a continuacin en el lado del servidor.
La validacin de entrada funciona comparando la entrada de datos del usuario
con el formato de entrada de datos predeterminado. Estos formatos
predeterminados de entrada de datos pueden incluir el nmero de caracteres, el
uso de dgitos y/o letras, el intervalo del valor, una cadena especfica de
caracteres, o una frmula matemtica.
Introduccin
Verificar valores de
control
4 Validacin de entrada de datos de usuario
Por ejemplo, un control de entrada de datos que solicita al usuario que
introduzca su nmero de telfono podra tener un control de validacin de
entrada de datos adjunto que verificara que el usuario nicamente introduce
nmeros en un formato basado en el nmero de telfono. Introducir letras o
muy pocos nmeros activara el control de validacin de entrada de datos para
validar la entrada de datos.
La entrada de usuario que concuerda con el formato predeterminado es
procesada por el formulario Web Form. La entrada de usuario que no concuerda
con el formato predeterminado provoca un mensaje de error que detiene el
procesamiento por parte del formulario Web hasta que la entrada de usuario se
corrige para cumplir con el formato previsto y la pgina haya sido reenviada
para su procesamiento.
Los controles de validacin protegen los formularios Web Forms de dos
importantes peligros: spoofing y cdigo mal intencionado. Ejecutando todos los
controles de validacin en el lado del servidor, con independencia de la
validacin del lado del cliente, ASP.NET protege de las siguientes amenazas:
Spoofing
Spoofing es cuando un usuario modifica la pgina HTML (Hypertext
Markup Language) que se le ha enviado, y devuelve valores que hacen que
parezca que ha introducido datos vlidos o pasado una comprobacin de
autorizacin. La validacin nicamente es susceptible de spoofing en el lado
del cliente, porque el usuario puede deshabilitar scripts del lado del cliente
cambiando las opciones del navegador y no ejecutar el cdigo de validacin
del lado del cliente, lo que crea un falso nivel de autorizacin.
Con ASP.NET, la validacin de entrada de datos del lado del cliente
siempre se repite en el lado del servidor, donde los usuarios no pueden
modificar o deshabilitar el control de validacin.
Cdigo mal intencionado
Cuando un usuario puede agregar texto ilimitado a una pgina Web
mediante controles de entrada de datos de usuario que no dispongan de
validacin de entrada de datos, puede introducir cdigo mal intencionado.
Cuando el usuario enva la siguiente solicitud al servidor, este cdigo
aadido podra ser muy perjudicial para el servidor Web y las aplicaciones
conectadas.
Por ejemplo, si decidimos no validar un campo UserName porque tenemos
clientes internacionales y no podemos pensar en un formato de nombres
universal para la validacin, un usuario mal intencionado podra explotar
esta falta de validacin para provocar varios problemas, incluyendo:
Generar un error de tipo buffer overrun y una cada del servidor
introduciendo un nombre con varios miles de caracteres.
Crear y autenticar una nueva cuenta de usuario.
Agregar privilegios a su propia cuenta, y eliminar privilegios de otras
cuentas.
Enviar una consulta SQL a nuestra base de datos de clientes y descargar
todos los datos presentes, incluyendo nombres de usuario, direcciones,
contraseas y nmeros de tarjetas de crdito.
Procesamiento de
bloque de errores
Spoofing y cdigo mal
intencionado
Validacin de entrada de datos de usuario 5
Validacin del lado del cliente y del lado del servidor
ASP.NET puede generar
validacin del lado del cliente y
del lado del servidor
Validacin del lado del cliente
Dependiente de la versin del
navegador
Respuesta inmediata
Reduce los ciclos de postback
Validacin del lado del servidor
Repite toda la validacin del lado
del cliente
Puede validar contra datos
almacenados
Vlido?
Vlido?
El usuario
introduce datos
No
No
S
S
Mensaje
de error
Cliente
Servidor
Aplicacin Web
procesada
***************************** use******************************
La validacin de entrada de datos puede tener lugar tanto en el servidor como
en el cliente. Aunque ASP.NET siempre requiere validacin del lado del
servidor, la validacin del lado del cliente es una opcin con algunos
navegadores.
Los controles de validacin de ASP.NET disponen de soporte tanto del lado del
cliente como del lado del servidor. La validacin del lado del cliente utiliza
J avaScript y scripts DHTML (HTML Dinmico). La validacin del lado del
servidor puede ser desarrollada en cualquier lenguaje basado en Microsoft
.NET, y se compila a Microsoft Intermediate Language (MSIL). Tanto la
validacin del lado del cliente como la validacin del lado del servidor utilizan
el mismo modelo de programacin, aunque algunas variaciones entre los
lenguajes pueden crear pequeas diferencias en las funciones de validacin.
La validacin del lado del cliente mejora el uso del formulario Web Form
comprobando la entrada de datos del usuario mientras se produce. Al
comprobar si se generan errores mientras se introducen, la validacin del lado
del cliente permite detectar errores antes de que el formulario Web Form sea
enviado, evitando as el viaje de ida y vuelta necesario para la validacin del
lado del servidor.
Escribir mltiples versiones de cdigo de validacin para soportar tanto el
servidor como los diferentes navegadores puede exigir mucho tiempo al
desarrollador. Los controles de validacin ASP.NET eliminan este problema ya
que la lgica de validacin se encapsula en los controles. Los controles crean
cdigo especfico para los navegadores de forma que los usuarios con soporte
de scripts del lado del cliente tendrn validacin de entrada de datos. Los
navegadores que no soporten scripts no recibirn los scripts de validacin en el
lado del cliente.
En versiones de navegador que soporten la validacin de entrada de datos,
como Microsoft Internet Explorer 4 o posterior, la validacin del lado del
cliente se produce cuando el usuario hace clic en el botn Submit. La pgina no
se publicar de nuevo en el servidor hasta que toda la validacin del lado del
Introduccin
Validacin del lado del
cliente
6 Validacin de entrada de datos de usuario
cliente sea correcta. En Internet Explorer 5 o posterior, el uso de la tecla
TABULADOR para moverse de un control de entrada de datos al siguiente
ejecuta la validacin del lado del cliente para el control de entrada de datos
completo. Esta validacin utilizando el TABULADOR ofrece al usuario
informacin inmediata sobre los datos que ha introducido.
Todos los controles de validacin de entrada de datos se ejecutan en el lado del
servidor. Las validaciones del lado del cliente se repiten en el lado del servidor
cuando la pgina se enva de nuevo al servidor. Esta repeticin evita el spoofing
de usuarios que no ejecutan el script del lado del cliente e intentan introducir
datos no vlidos.
Los controles de validacin del lado del servidor pueden escribirse en cualquier
lenguaje basado en .NET, y se compilan en MSIL antes de ser ejecutados en el
servidor.
Adems de validar el formato de los datos introducidos, los controles de
validacin del lado del servidor pueden utilizarse para comparar la entrada de
datos del usuario con datos almacenados. Esta funcionalidad permite validacin
contra diversos elementos, como contraseas previamente almacenadas o
restricciones geogrficas, incluyendo las leyes y los impuestos locales.
Validacin del lado del
servidor
Validacin de entrada de datos de usuario 7
Controles de validacin ASP.NET
ASP.NET proporciona controles de validacin para:
Comparar valores
Comparar con una frmula personalizada
Comparar con un intervalo
Comparar con un modelo de expresin habitual
Requerir entrada de datos por parte del usuario
Resumir los controles de validacin de una pgina
***************************** use******************************
ASP.NET incluye los controles de validacin que se muestran en la siguiente
tabla.
Control de validacin Funcin
CompareValidator Compara un control de entrada de datos con otro, un valor fijo,
un tipo de datos o un archivo. Por ejemplo, este control puede
utilizarse para campos de verificacin de contraseas.
CustomValidator Nos permite escribir nuestro propio cdigo para crear la
expresin de validacin. Por ejemplo, este control puede
utilizarse para verificar que el valor es un nmero primo.
RangeValidator Similar al control CompareValidator, pero este control puede
verificar que la entrada de datos de usuario est entre dos
valores o los valores de otros controles de entrada de datos.
Por ejemplo, este control puede utilizarse para verificar que la
entrada el usuario coincide con el intervalo de edad esperado.
RegularExpression
Validator
Verifica que la entrada coincide con un modelo definido por
una expresin habitual. Este control de validacin permite
comprobar secuencias predecibles de caracteres, como
nmeros de la seguridad social, direcciones electrnicas,
nmeros de telfono y cdigos postales. Visual Studio .NET
proporciona modelos predefinidos para expresiones habituales
como nmeros de telfono.
RequiredFieldValidator Comprueba si se ha introducido un valor en un control. Es el
nico control de validacin que requiere un valor. El resto de
controles de validacin de entrada de datos aceptarn un
control vaco como respuesta vlida.
ValidationSummary Muestra un resumen de todos los errores de validacin para
todos los controles de validacin de la pgina. Este control se
ubica normalmente cerca del botn Submit para proporcionar
respuesta inmediata sobre el estado de entrada de datos de la
pgina.
Controles de validacin
8 Validacin de entrada de datos de usuario
Leccin: uso de los controles de validacin
Agregar controles de validacin a un formulario Web
Form
Posicionar controles de validacin en un formulario
Web Form
Combinar controles de validacin
Controles de validacin para la entrada de datos
Uso del control RegularExpressionValidator
Demostracin: uso de controles de validacin
Uso del control CustomValidator
Demostracin: uso del control CustomValidator
***************************** use******************************
En esta leccin, estudiaremos cmo aplicar controles de validacin a controles
de entrada de datos en un formulario Web Form ASP.NET.
Validar los datos introducidos por el usuario sola ser un proceso difcil. Para
cada control de entrada de datos, era necesario escribir primero cdigo de
validacin para el servidor en un determinado lenguaje. A continuacin, si se
realizaba validacin en el lado del cliente, necesitbamos escribir la validacin
equivalente en el lado del cliente en un script diferente para cada navegador.
ASP.NET y Visual Studio .NET han hecho ms fcil la validacin de la entrada
de usuario al proporcionar controles de validacin que proporcionan cdigo en
el lado del servidor y en el lado del cliente al agregarlos a nuestro formulario
Web Form.
En esta leccin, aprenderemos a:
Agregar un control de validacin a un formulario Web Form y asociarlo a
un control de entrada de datos.
Posicionar los controles de validacin en una pgina Web para soportar el
uso correcto del control de entrada de datos asociado.
Utilizar los controles de validacin RequiredInputValidator,
CompareValidator y RangeValidator para validar datos introducidos por
el usuario.
Utilizar el control RegularExpressionValidator para validar datos
introducidos por el usuario.
Utilizar el control CustomValidator para validar datos introducidos por el
usuario.
Asociar mltiples controles de validacin a un nico control de entrada de
datos.
Introduccin
Objetivos de la leccin
Validacin de entrada de datos de usuario 9
Agregar controles de validacin a un formulario Web Form
1. Agregar un control de validacin
2. Seleccionar el control de entrada de datos para validar
3. Establecer propiedades de validacin
<asp:Type_of_Validator
id="Validator_id"
runat="server"
ControlToValidate="txtName"
ErrorMessage="Message_for_error_summary"
Display="static|dynamic|none"
Text="Text_to_display_by_input_control">
</asp:Type_of_Validator>
<asp:Type_of_Validator
id="Validator_id"
runat="server"
ControlToValidate="txtName"
ErrorMessage="Message_for_error_summary"
Display="static|dynamic|none"
Text="Text_to_display_by_input_control">
</asp:Type_of_Validator>
<asp:TextBox id="txtName" runat="server" />
<asp:TextBox id="txtName" runat="server" />
1
1 1
2
2 2
3
3 3
***************************** use******************************
Como todos los controles de validacin de entrada de datos comparten un
modelo de objetos comn, el proceso de agregar controles de validacin a una
pgina es el mismo para todos los controles. En Visual Studio .NET,
simplemente arrastramos el control de validacin de entrada a una pgina,
seleccionamos el control de entrada a validar y establecemos las propiedades.
Para agregar un control de validacin, abrimos el cuadro de herramientas del
formulario Web Form, seleccionamos uno de los controles de validacin
disponibles y lo arrastramos junto al control de entrada de datos que deseamos
validar.
Seleccionamos el control de entrada de datos para validar abriendo la ventana
Propiedades y seleccionando el ID de control de entrada de datos apropiado en
la lista desplegable que se encuentra junto a la propiedad ControlToValidate.
Podemos adjuntar mltiples controles de validacin a un nico control de
entrada de datos. Todos los controles de validacin adjuntos deben estar en
True antes de que ese control de entrada de datos sea aceptado y el formulario
Web Form ASP.NET pueda ser procesado.
Una vez el control de validacin de entrada de datos est ubicado en la pgina,
utilizamos la ventana Propiedades para introducir las propiedades especficas
del control, como la expresin de validacin, el mensaje de error y mensaje de
texto.
La sintaxis compartida para los controles de validacin de entrada de datos es la
siguiente:
<asp:type_of_validator id="validator_id" runat="server"
ControlToValidate="control_id"
ErrorMessage="error_message_for_error_summary"
Display="static|dynamic|none"
Text="Text_to_display_by_input_control">
</asp:type_of_validator>
Introduccin
Agregar un control de
validacin
Seleccionar el control de
entrada de datos para
validar
Establecer las
propiedades de
validacin
10 Validacin de entrada de datos de usuario
Cada control de validacin tiene propiedades nicas adicionales que definen el
modo de funcionamiento. Dos de las propiedades que comparten todos los
controles de validacin, a excepcin del control ValidationSummary, son
Type y EnableClientScript:
Type
La propiedad Type es el tipo de datos que se validar. Visual Studio .NET
ajustar automticamente el tipo de datos para que coincida con el control
de entrada de datos adjunto al seleccionar ControlToValidate.
Entre los tipos de datos disponibles se incluyen String, Integer, Double,
Date y Currency.
EnableClientScript
La propiedad EnableClientScript indica si realizamos o no la validacin
del lado del cliente. El valor predeterminado de esta propiedad es true.
ASP.NET crea procedimientos de validacin en el lado del cliente en
Microsoft J Script .NET, y crea procedimientos de validacin del lado del
servidor en C#y Microsoft Visual Basic.NET. Esta diferencia de lenguaje
puede provocar pequeas diferencias entre las implementaciones de
controles de validacin en el lado del cliente y en el lado del servidor.
Validacin de entrada de datos de usuario 11
Posicionar controles de validacin en un formulario Web Form
Crear mensajes de error
Seleccionar modo de presentacin
Esttico
Dinmico
***************************** use******************************
Los controles de validacin de entrada de datos pueden mostrar un mensaje de
error cuando se produce una violacin en la entrada de datos. Es importante
posicionar los controles de validacin de entrada de datos de modo que el
usuario vea claramente qu control contiene la entrada de datos incorrecta. En
Visual Studio .NET, debemos posicionar el control de validacin en la pgina
donde debe aparecer el mensaje de error.
El cdigo HTML estndar para un control de validacin de entrada de datos es
el siguiente:
<asp:type_of_validator id="validator_id" runat="server"
ControlToValidate="control_id"
ErrorMessage="error_message_for_error_summary"
Display="static|dynamic|none"
Text="Text_to_display_by_input_control">
</asp:type_of_validator>
Los controles de validacin de entrada de datos ASP.NET contienen dos
propiedades de mensajes de error: una propiedad ErrorMessage y una
propiedad Text, pudindose mostrar ambas en la ubicacin del control de
validacin de entrada de datos. La diferencia entre ambas propiedades de
mensajes de error es la siguiente:
Propiedad ErrorMessage
La propiedad ErrorMessage es el mensaje de error que se muestra en la
ubicacin de un control de validacin cuando ste se dispara, si no est
establecida la propiedad Text. Este mensaje tambin se incluir en un
control ValidationSummary si se utiliza uno en el formulario Web Form.
Introduccin
Mensajes de error
12 Validacin de entrada de datos de usuario
Propiedad Text
La propiedad Text es el texto alternativo que se mostrar en la ubicacin del
control de validacin cuando se utilizan las propiedades ErrorMessage y
Text, y se dispara el control de validacin. Si se utiliza un control
ValidationSummary para capturar mensajes de error, normalmente se
utiliza un asterisco (*) rojo a la derecha del control de entrada de datos no
vlido para indicar dnde se encuentra el error.
En Visual Studio .NET, el script predeterminado para la propiedad Text es
imprimir el contenido de Text entre las etiquetas de inicio y final del control
de validacin, como muestra el siguiente cdigo:
<asp:type_of_validator>Text</asp:type_of_validator>
En este mdulo, observarmos la propiedad Text declarada explcitamente,
como muestra el siguiente cdigo:
<asp:type_of_validatorText="Text">
</asp:type_of_validator>
La propiedad Display establece el espacio de mensajes de error desde mltiples
controles de validacin cuando se muestra el formulario Web Form en
FlowLayout. La propiedad Display nicamente afecta a mensajes de error en la
ubicacin del control de validacin. Los mensajes que se muestran en
ValidationSummary no se ven afectados por la propiedad Display.
La siguiente tabla describe las diversas opciones de la propiedad Display.
Opciones Descripcin
Static Define una presentacin prefijada para el mensaje de error, con cada
control de validacin ocupando un espacio, aunque no haya texto de
mensaje de error visible. Esta opcin permite definir una presentacin
fija para la pgina, como se muestra en la ilustracin anterior.
De forma predeterminada, Visual Studio .NET utiliza
Display="static" para posicionar el texto del mensaje de error.
Dynamic Permite que los controles de validacin se representen en la pgina
como parte del flujo de texto. El uso de esta opcin evita que se
muestren espacios en blanco en la pgina cuando no se invocan los
controles de validacin de entrada de datos, como se muestra en la
ilustracin anterior. En ocasiones, esta opcin hace que los controles
tengan movimiento en el formulario Web Form cuando se muestran
mensajes de error.
None Bloquea la visualizacin de mensajes de error en la ubicacin del
control de validacin.
Establecer la propiedad
Display
Validacin de entrada de datos de usuario 13
Combinar controles de validacin
Pueden existir mltiples controles de validacin en un nico
control de entrada de datos
nicamente RequiredFieldValidatorcomprueba los controles
vacos
***************************** use******************************
En ocasiones, una nica funcin o control de validacin no es suficiente para
verificar que el usuario ha introducido correctamente los datos en un control de
entrada.
Por ejemplo, un control TextBox con nmeros de telfono puede requerir una
entrada, ajustarse a uno o varios modelos de nmero de telfono y ser verificada
contra una base de datos que almacena nmeros de telfono. En este escenario,
TextBox debera estar enlazado a un control RequiredFieldValidator, un
control RegularExpressionValidator con varios patrones y un control
CustomValidator con acceso a una base de datos.
Podemos asociar mltiples controles de validacin a un nico control de
entrada de datos. Esta asociacin muchos-a-uno de los controles de validacin
permite la introduccin de datos del usuario para ms de un requerimiento de
validacin.
El siguiente cdigo de ejemplo muestra un nico control de entrada de datos
para un nmero de telfono. El contenido del control de entrada de datos se
comprueba utilizando un control RequiredFieldValidator, y el formato
correcto se comprueba utilizando un control RegularExpressionValidator:
Control de entrada de datos
El siguiente cdigo define el control TextBox que se est validando:
<asp:TextBox id="txtPhone1" runat="server" >
</asp:TextBox>
Introduccin
Mltiples controles de
validacin en un nico
control de entrada
Ejemplo
14 Validacin de entrada de datos de usuario
Control RequiredFieldValidator
El siguiente cdigo define el control RequiredFieldValidator que verifica
que hay una entrada en txtPhone1:
<asp:RequiredFieldValidator
id="RequiredtxtPhone1Validator1"
runat="server"
ErrorMessage=
"A telephone number is required"
ControlToValidate="txtPhone1"
Text="*">
</asp:RequiredFieldValidator>
Control RegularExpressionValidator
El siguiente cdigo define el control RegularExpressionValidator que
verifica que la entrada en txtPhone1 coincide con el modelo de nmero de
telfono de Estados Unidos:
<asp:RegularExpressionValidator
id="RegulartxtPhone1Validator1"
runat="server"
ErrorMessage=_
"This telephone number is not formatted correctly"
ControlToValidate="txtPhone1"
ValidationExpression=
"((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}"
Text="*">
</asp:RegularExpressionValidator>
Control CustomValidator
El siguiente cdigo define el control CustomValidator que invoca la
funcin MyServerValidation, que compara la entrada en txtPhone1 con
una base de datos de nmeros de telfono:
<asp:CustomValidator
id="CustomValidator1"
OnServerValidate = "MyServerValidation"
runat="server"
ErrorMessage="This telephone number is not recognized"
ControlToValidate="txtPhone1"
Text="*">
</asp:CustomValidator>
Validacin de entrada de datos de usuario 15
Controles de validacin de entrada de datos
RequiredFieldValidator
InitialValue
CompareValidator
ValueToCompararo ControlToComparar
Type
Operator
RangeValidator
MinimumValue
MaximumValue
Type
Cdigo de ejemplo
***************************** use******************************
Los controles de validacin ms sencillos son los controles
RequiredFieldValidator, CompareValidator y RangeValidator. Todos ellos
validan contra valores fijos o contra un segundo control de entrada de datos.
Utilizamos el control RequiredFieldValidator para obligar a un usuario a
introducir datos en un control de entrada de datos. Cualquier carcter es una
respuesta vlida con este control de validacin. nicamente la nula entrada de
datos (en blanco), o espacios, constituye una entrada no vlida con este control.
El control RequiredFieldValidator se utiliza normalmente slo en controles de
entrada de datos necesarios para completar un proceso solicitado. Por ejemplo,
un control RequiredFieldValidator se utilizara para los campos
nombre_usuario y contrasea en una pgina de inicio de sesin, pero no para
informacin secundaria, como una oferta para convertirse en visitante favorito
de un determinado sitio Web.
Una opcin para el control RequiredFieldValidator es tener un valor inicial
que no sea una cadena vaca (en blanco). Resulta til tener un valor inicial
cuando tenemos un valor predeterminado para un control de entrada de datos y
deseamos que el usuario introduzca otro valor. Para requerir un cambio del
valor inicial del control de entrada de datos asociado, establecer la propiedad
InitialValue para que coincida con el valor inicial del control de entrada de
datos.
En el siguiente ejemplo, un control RequiredFieldValidator verifica que el
valor txtName del control TextBox no es el valor inicial de Enter your name:
Introduccin
Control
RequiredFieldValidator
16 Validacin de entrada de datos de usuario
<asp:TextBox id="txtName" runat="server">
Enter your name</asp:TextBox>
<asp:RequiredFieldValidator id="txtNameValidator"
runat="server"
ControlToValidate="txtName"
InitialValue="Enter your name"
ErrorMessage="You must enter your name"
Display="dynamic"
Text="*">
</asp:RequiredFieldValidator>
nicamente el control RequiredFieldValidator requiere que se
introduzca un valor en un control. El resto de controles de validacin aceptarn
un control vaco o un espacio como respuesta vlida.
Utilizamos el control CompareValidator para probar la entrada de datos del
usuario contra un valor especfico o contra un segundo control de entrada de
datos. El control CompareValidator a menudo se utiliza donde el riesgo de
errores tipogrficos es alto, como campos de contrasea que no muestran la
entrada real de usuario.
El control CompareValidator mostrar como vlido un control de entrada de
datos vaco.
El control CompareValidator utiliza las siguientes propiedades:
ValueToCompare
La propiedad ValueToCompare se utiliza para establecer un valor
constante con el que realizar la comparacin. Utilizamos un carcter tubera
(|) para separar varios valores. Esta propiedad se utiliza especialmente para
validar contra valores inalterables, como un lmite de edad mnima.
Utilizamos el control CustomValidator para comparar contra valores que
pueden cambiar.
ControlToCompare
La propiedad ControlToCompare se utiliza para identificar otro control
con el que realizar la comparacin. Esta propiedad puede utilizarse para
buscar errores tipogrficos haciendo que el usuario introduzca los mismos
datos en dos campos adyacentes.
Si establecemos ambas propiedades, ValueToCompare y
ControlToCompare, la propiedad ControlToCompare tiene prioridad.
Type
La propiedad Type se utiliza para especificar el tipo de datos. Utilizamos
esta propiedad cuando deseamos comparar el valor de un control de entrada
de datos contra un DataType.
Operator
La propiedad Operator especifica el operador de comparacin a utilizar.
Los operadores se especifican con el nombre de los operadores de
comparacin, como Equal, NotEqual, GreaterThan y
GreaterThanEqual.
Nota
Uso del control
CompareValidator
Validacin de entrada de datos de usuario 17
En el siguiente ejemplo, un control CompareValidator verifica que los valores
de los controles TextBox, txtPassword1 y txtPassword2, coinciden:
<asp:TextBox id="txtPassword1" runat="server">
Enter your password </asp:TextBox>
<asp:TextBox id="txtPassword2" runat="server" >
Enter your password again </asp:TextBox>
<asp:CompareValidator id="CompareValidator1" runat="server"
ErrorMessage="These fields do not match"
ControlToCompare="txtPassword1"
ControlToValidate="txtPassword2"
Text="*">
</asp:CompareValidator>
El control RangeValidator se utiliza para comprobar si el valor introducido
est dentro de un determinado intervalo. El intervalo de medida es inclusivo y
los valores mnimo y mximo se consideran vlidos. El control
RangeValidator se utiliza normalmente para verificar que el valor introducido
(por ejemplo, edad, estatura, salario o nmero de hijos) coincide con un
intervalo previsto.
El control RangeValidator mostrar como vlido un control de entrada de
datos vaco.
El control RangeValidator tiene las siguientes propiedades:
MinimumValue
La propiedad MinimumValue especifica el valor mnimo del intervalo
vlido para variables numricas, o la longitud mnima de la cadena de
caracteres para variables de cadena.
MaximumValue
La propiedad MaximumValue especifica el valor mximo del intervalo
vlido para variables numricas, o la longitud mxima de la de caracteres
cadena para variables de cadena.
Type
La propiedad Type se utiliza para especificar el tipo de datos de los valores
a comparar. Los valores a comparar se convierten en este tipo de datos antes
de que se realice alguna comparacin.
En el siguiente ejemplo, un control RangeValidator verifica que el control
TextBox denominado txtAge tiene un valor entre 18 y 50:
Uso del control
RangeValidator
18 Validacin de entrada de datos de usuario
<asp:textbox id="txtAge" runat="server">
Enter your age</asp:textbox>
<asp:RangeValidator id="txtAgeValidator" runat="server"
ControlToValidate="txtAge"
Type="Integer"
MinimumValue="18"
MaximumValue="50"
ErrorMessage="Applicants must be between 18 and 50"
Display="dynamic"
Text="*">
</asp:RangeValidator>
Validacin de entrada de datos de usuario 19
Uso del control RegularExpressionValidator
Se utiliza cuando la entrada debe ajustarse a un
modelo predefinido
Visual Studio .NET incluye modelos para:
Nmeros de telfono
Cdigos postales
Direcciones electrnicas
<asp:RegularExpressionValidator
ControlToValidate="US_PhoneNumber"
ValidationExpression="((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}"
>*</asp:RegularExpressionValidator >
<asp:RegularExpressionValidator
ControlToValidate="US_PhoneNumber"
ValidationExpression="((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}"
>*</asp:RegularExpressionValidator >
Cdigo de ejemplo
***************************** use******************************
Cuando debemos verificar que los datos introducidos por un usuario coinciden
con un modelo predefinido, como un nmero de telfono, un cdigo postal o
una direccin electrnica, utilizamos el control RegularExpressionValidator.
Este control de validacin compara el modelo de caracteres, dgitos y smbolos
introducidos por el usuario con uno o ms modelos en el control.
Cuando hacemos clic en ValidationExpression en la ventanaPropiedades,
Visual Studio .NET proporciona una serie de modelos de expresiones
habituales preestablecidas. Estos modelos incluyen direcciones electrnicas y
Web, nmeros de telfono y cdigos postales. Para crear un nuevo modelo,
seleccionar la plantilla Custom. El ltimo modelo utilizado estar disponible
para ser modificado. Esta caracterstica del ltimo utilizado ofrece una base a
partir de la cual crear nuestro propio modelo.
Introduccin
20 Validacin de entrada de datos de usuario
Generamos nuestras propias expresiones habituales personalizadas utilizando el
conjunto de caracteres de control que se muestran en la siguiente tabla.
Carcter Definicin
a Debe utilizar la letra en minscula. Las letras que no estn precedidas
por una barra invertida (\), o parte de un intervalo, son un
requerimiento para ese valor literal.
1 Debe utilizar el nmero 1. Cualquier nmero que no est precedido de
una barra invertida (\),o parte de un intervalo, es un requerimiento para
ese valor literal.
? Elemento 0 1.
* Elementos 0 a N.
+ Elementos 1 a N (1 como mnimo).
[0-n] Intervalo de valores enteros de 0 a n.
{n} La longitud debe ser n caracteres.
| Separa mltiples modelos vlidos.
\ El siguiente carcter es un carcter comando.
\w Debe tener un carcter.
\d Debe tener un dgito.
\. Debe tener un periodo.
Para ms informacin sobre los caracteres de control, leer la
Introduccin a las expresiones regulares, en la documentacin en lnea de
Referencia de JScript.
El siguiente cdigo de ejemplo muestra cmo podemos utilizar un control
RegularExpressionValidator para comprobar si un usuario ha introducido una
direccin electrnica vlida:
<asp:TextBox id="txtEmail" runat="server" />
<asp:RegularExpressionValidator id="txtEmail_validation"
runat="server"
ControlToValidate="txtEmail"
ErrorMessage="Use the format username@organization.xxx"
ValidationExpression="\w+@\w+\.\w+"
Text="*">
</asp:RegularExpressionValidator>
Caracteres de
expresiones habituales
Nota
Ejemplo de una
expresin simple
Validacin de entrada de datos de usuario 21
Este control de validacin RegularExpression comprueba un modelo
especfico, como muestra la siguiente tabla.
Caracteres Definicin
\w+ Una cadena de un carcter como mnimo.
@ Un signo (@).
\w+ Una cadena de un carcter como mnimo.
\. Un periodo.
\w+ Una cadena de un carcter como mnimo.
Una direccin electrnica vlida para este control es: alguien@ejemplo.com.
Una direccin electrnica no vlida para este control es: alguien.com, o
alguien@.com.
La expresin predeterminada de correo electrnico de Visual Studio .NET es
ms compleja que el ejemplo anterior. El modelo predeterminado de correo
electrnico tambin limita la separacin de trminos antes y despus del signo
(@) a xx.xx o xx-xx.
La expresin regular predeterminada para direcciones electrnicas es:
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
Este control de validacin RegularExpression comprueba un modelo
especfico, como muestra la siguiente tabla.
Caracteres Definicin
\w+ Una cadena de un carcter como mnimo.
([-+.]\w+)* Puede tener uno o ms guiones o un punto, y una cadena de un
carcter como mnimo.
@ Un signo (@).
\w+ Una cadena de un carcter como mnimo.
([-.]\w+)* Puede tener un guin o un punto, y una cadena de un carcter como
mnimo.
\. Un punto.
\w+ Una cadena de un carcter como mnimo.
([-.]\w+)* Puede tener un guin o un punto, y una cadena de un carcter como
mnimo.
Una direccin electrnica vlida para este control es: algu-
ien@ejemplo.empresa.com.
Una direccin electrnica no vlida para este control es:
algu,ien@ejemplo..empresa.com.
Ejemplo de una
expresin compleja
22 Validacin de entrada de datos de usuario
Demostracin: uso de los controles de validacin
Crear un formulario Web FormASP.NET
con controles TextBox y Button
Agregar un control
RequiredFieldValidator
Agregar un control RangeValidator
Agregar un control
RegularExpressionValidator
***************************** use******************************
En esta demostracin, veremos cmo puede utilizarse un control
RequiredFieldValidator para verificar que un control TextBox se ha rellenado
antes de que un formulario Web Form sea procesado.
Ejecutar esta demostracin
1. Crear un nuevo proyecto de aplicacin Web denominado ValidationTst1.
2. Cambiar a FlowLayout.
3. Arrastrar los siguientes controles Web desde el Cuadro de herramientas a
WebForm1: TextBox y Button.
4. Agregar un control RequiredFieldValidator junto al control de entrada de
datos TextBox.
5. Establecer las propiedades del control RequiredFieldValidator en la
ventana Propiedades, como muestra la siguiente tabla.
Propiedad Valor
ControlToValidate TextBox1
ErrorMessage Texto del mensaje de error
Text Se requiere entrada de datos
6. Mostrar que la propiedad Display de RequiredFieldValidator est
establecida en Static de forma predeterminada.
7. Guardar, generar y examinar la pgina.
8. Dejar el control en blanco y hacer clic en Button1.
Se obtiene el mensaje de error Text, y no el mensaje ErrorMessage.
Crear un formulario Web
FormASP.NET con
controles TextBox y
Button
Agregar un control
RequiredFieldValidator
Validacin de entrada de datos de usuario 23
9. Agregar un control RangeValidator al formulario Web Form junto a
RequiredFieldValidator.
10. Establecer las propiedades del control RangeValidator en la ventana
Propiedades, como muestra la siguiente tabla:
Propiedad Valor
ControlToValidate TextBox1
ErrorMessage Texto del mensaje de error
Text Fuera del intervalo
MaximumValue 100
MinimumValue 16
Type Entero
11. Guardar, generar y examinar la pgina.
12. Dejar el valor en blanco y hacer clic en Button.
Se debera obtener el mensaje Se requiere entrada de datos del control
RequiredFieldValidator.
13. Escribir un valor mayor que 100 o menor que 16, y hacer clic en Button. Se
debera obtener el mensaje Fuera del intervalo del control
RangeValidator.
El mensaje de texto Fuera del intervalo no est directamente junto al
control de entrada de datos. Debido a que la pgina est en modo de
presentacin esttico, el control RequiredFieldValidator guarda un espacio
para su mensaje de texto.
14. Volver a abrir el formulario Web Form, seleccionar el control
RequiredFieldValidator y cambiar la propiedad Display a Dynamic.
15. Guardar, generar y examinar la pgina.
16. Introducir un valor mayor que 100 o menor que 16, y hacer clic en Button.
Se debera obtener el mensaje Fuera del intervalo del control
RangeValidator.
Esta vez, el mensaje de texto Fuera del intervalo est directamente junto al
control de entrada de datos debido a que RequiredFieldValidator no
guarda el espacio para su mensaje de texto (modo de presentacin
dinmico).
17. Agregar un segundo control TextBox y un control
RegularExpressionValidator junto a l.
18. Hacer clic con el botn derecho en el control RegularExpressionValidator
y clic en Propiedades, o clic en el control RegularExpressionValidator si
la ventana Propiedades sigue abierta, e introducir las siguientes propiedades:
a. En la propiedad ErrorMessage, escribir Direccin electrnica no
vlida.
b. En la propiedad ControlToValidate, seleccionar TextBox2.
c. En la propiedad ValidationExpression, seleccionar Internet E-mail
Address.
19. Guardar, generar y examinar la pgina.
Agregar un control
RangeValidator
Agregar un segundo
control TextBox y un
control Regular
ExpressionValidator
24 Validacin de entrada de datos de usuario
Escribir una direccin electrnica incorrecta en el segundo cuadro de texto y
hacer clic en Button. Se debera obtener el mensaje de texto Direccin
electrnica no vlida del control RegularExpressionValidator.
20. Seleccionar Ver fuente y mostrar la validacin del lado del cliente HTML.
Validacin de entrada de datos de usuario 25
Uso del control CustomValidator
Es posible validar en lado del cliente, en el lado del
servidor, o en ambos
ClientValidationFunction
OnServerValidate
Validar con:
Frmula
Datos
Objetos COM
Servicio Web
Cdigo de ejemplo
***************************** use******************************
Utilizamos el control CustomValidator cuando deseamos utilizar nuestra
propia lgica de validacin personalizada para comprobar los datos
introducidos por el usuario contra una variable, frmula, o la entrada desde una
segunda fuente. El control CustomValidator se utiliza a menudo para
situaciones como la verificacin de contraseas, en las que los datos
introducidos por el usuario se comparan con una contrasea almacenada en una
base de datos de usuarios.
El control CustomValidator valida en el lado del servidor, y puede validar en
el lado del cliente si el navegador soporta la validacin. A diferencia de otros
controles de validacin, donde ASP.NET crea los scripts de validacin de
cliente y servidor, debemos escribir explcitamente los scripts de validacin
para el control CustomValidator. Establecemos el control CustomValidator
como vlido o no vlido utilizando la propiedad args.IsValid.
Las propiedades del control CustomValidator incluyen:
ClientValidationFunction
La propiedad ClientValidationFunction es el script que deseamos que
ejecute el control CustomValidator en el lado del cliente. Debido a que
escribimos nuestro propio script en el cliente, es importante comprobar que
existe coherencia lgica con el cdigo del lado del servidor.
OnServerValidate
La propiedad OnServerValidate es el script que deseamos que ejecute el
control CustomValidator en el lado del servidor. Debido a que escribimos
nuestro propio cdigo en el servidor, es importante comprobar que existe
coherencia lgica con el script del lado del cliente.
Introduccin
Validacin del lado del
cliente y del lado del
servidor
26 Validacin de entrada de datos de usuario
El siguiente cdigo de ejemplo muestra procedimientos del lado del servidor y
del lado del cliente para un control CustomValidator y verificar que un
nmero introducido en un control de entrada de datos es un nmero par:
<asp: CustomValidator
ClientValidationFunction = "MyClientFunction"
OnServerValidate = "MyServerFunction" />
Procedimiento del lado del cliente
El siguiente cdigo J Script est pensado para ejecutarse en Internet Explorer
6, y verificar que un nmero es par:
<script language = "Jscript">
function MyClientFunction(source, arguments) {
alert("Ejecucin en el cliente");
var intValue = arguments.Value;
if (intValue % 2 == 0) {
arguments.IsValid = true;
} else {
arguments.IsValid = false;
}
}
</script>
Procedimiento del lado del servidor
El siguiente cdigo est diseado para ejecutarse en un servidor .NET, y
verificar que un nmero es par:
Sub MyServerFunction(objSource as Object, _
args as ServerValidateEventArgs)
Dim intValue As Integer = args.Value
If intValue mod 2 = 0 Then
args.IsValid = True
Else
args.IsValid = False
End If
End Sub
private void MyServerFunction(object objSource,
ServerValidateEventArgs args)
{
int intValue = Convert.ToInt16(args.Value);
if (intValue%2 == 0)
{
args.IsValid = true;
}
else
{
args.IsValid = false;
}
}
Ejemplo
Visual Basic .NET
C#
Validacin de entrada de datos de usuario 27
Demostracin: uso del control CustomValidator
Agregar un control CustomValidator
Escribir el cdigo del lado del servidor
Escribir el scripten el lado del cliente
Probar el resultado
***************************** use******************************
En esta demostracin, veremos cmo utilizar un control CustomValidator.
El cdigo para esta demostracin se encuentra en el proyecto Demo06VB o
Demo06CS que se pueden encontrar dentro del fichero demos06.zip
Ejecutar esta demostracin
1. Abrir el formulario Web Form denominado CustomValidator.aspx en
Visual Studio .NET.
El formulario Web Form ya dispone de un control TextBox y de un control
Button.
2. Agregar un control CustomValidator al formulario Web Form .
3. En la propiedad Text del control CustomValidator, escribir Es un nmero
impar.
4. Establecer la propiedad ControlToValidate en TextBox1.
5. Hacer doble clic en CustomValidator para abrir el procedimiento de evento
del lado del servidor y agregar el siguiente cdigo:
Dim intValue As Integer = args.Value
If intValue mod 2 = 0 Then
args.IsValid = True
Else
args.IsValid = False
End If
Introduccin
Agregar un control
CustomValidator
Escribir el cdigo del
lado del servidor
Visual Basic .NET
28 Validacin de entrada de datos de usuario
int intValue = Convert.ToInt16(args.Value);
if (intValue % 2 == 0)
{
args.IsValid = true;
}
else
{
args.IsValid = false;
}
El procedimiento de eventos del lado del servidor que Visual Studio .NET
ha creado automticamente debera tener el nombre
CustomValidator1_ServerValidate, y dos parmetros: source (tipo
Object) y args (tipo ServerValidateEventArgs).
6. En la propiedad ClientValidationFunction del control CustomValidator,
escribir MyClientValidation.
7. Abrir el cdigo fuente HTML de la pgina CustomValidator.aspx (y no
CustomValidator.aspx.vb).
8. Quitar el comentario del siguiente cdigo que se encuentra justo despus de
la etiqueta <head>. Este ejemplo est en J Script:
function MyClientValidation(source, arguments)
{
alert("Ejecucin en el cliente");
var intValue = arguments.Value;
if (intValue % 2 == 0)
{
arguments.IsValid = true;
} else {
arguments.IsValid = false;
}
}
Verificar que el navegador de destino es Internet Explorer 5. En la vista de
Diseo o la vista HTML, seleccionar Propiedades, y verificar que Target
Schema est establecido a Internet Explorer 5.0.
9. Establecer la propiedad EnableClientScript del control CustomValidator
a True.
El script del lado del cliente se ejecutar antes del cdigo del lado del
servidor para evitar el viaje de ida y vuelta al servidor con la pgina si esta
propiedad est establecida a True y el navegador cliente es Internet
Explorer 4 o posterior.
C#
Escribir el script del
lado del cliente
Probar el resultado
Validacin de entrada de datos de usuario 29
10. Generar y examinar CustomValidator.aspx.
11. Escribir un nmero en el cuadro de texto.
12. Se debera obtener el cuadro de mensaje Ejecucin en el cliente al hacer
clic en Button. Adems, se debera obtener el mensaje Es un nmero
impar cuando el nmero sea impar.
13. Establecer la propiedad EnableClientScript del control CustomValidator
en False, de forma que nicamente se ejecute el cdigo del lado del
servidor.
14. Generar y examinar la pgina.
15. En este momento no se debera obtener el cuadro de mensaje, ya que se est
ejecutando el cdigo en el lado del servidor. Sin embargo, seguir
apareciendo el mensaje Es un nmero impar cuando el nmero sea impar.
30 Validacin de entrada de datos de usuario
Leccin: validacin de pginas
Uso de la propiedad Page.IsValid
Uso del control ValidationSummary
Demostracin: uso de la propiedad Page.IsValidy del
control ValidationSummary
***************************** use******************************
En esta leccin, estudiaremos cmo utilizar la propiedad Page.IsValid y el
control ValidationSummary para verificar que todos los controles de
validacin de un formulario ASP.NET Web Form son vlidos antes de que se
inicie el proceso.
En esta leccin, aprenderemos a:
Utilizar la propiedad Page.IsValid para determinar si todos los controles de
validacin de entrada de datos de una pgina son vlidos.
Utilizar el control ValidationSummary para mostrar un resumen de
mensajes de error en una pgina.
Introduccin
Objetivos de la leccin
Validacin de entrada de datos de usuario 31
Uso de la propiedad Page.IsValid
Examina todos los controles de validacin
Sub cmdSubmit_Click(s As Object, e As EventArgs)
If Page.IsValid Then
Message.Text = "Page is valid!"
' Perform database updates or other logic here
End If
End Sub
Sub cmdSubmit_Click(s As Object, e As EventArgs)
If Page.IsValid Then
Message.Text = "Page is valid!"
' Perform database updates or other logic here
End If
End Sub
private void cmdSubmit_Click(object s, System.EventArgs e)
{ if (Page.IsValid)
{ Message.Text = "Page is Valid!";
// Perform database updates or other logic here
}
}
private void cmdSubmit_Click(object s, System.EventArgs e)
{ if (Page.IsValid)
{ Message.Text = "Page is Valid!";
// Perform database updates or other logic here
}
}
***************************** use******************************
.NET permite verificar que todos los controles de una pgina son vlidos antes
de que realicen alguna accin. Esta verificacin puede llevarse a cabo en el
cliente o en el servidor, dependiendo del navegador que se est utilizando. La
verificacin del lado del cliente se realiza con el control ValidationSummary,
mientras que la verificacin del lado del servidor se realiza con la propiedad
Page.IsValid.
Para determinar si todos los controles de validacin de una pgina son vlidos,
comprobamos la propiedad IsValid de la pgina en tiempo de ejecucin. La
propiedad IsValid se vincula a los valores de todos los controles de validacin
que se encuentran en la pgina (utilizando un AND lgico). Si algn control de
validacin no es vlido, la propiedad IsValid devuelve False. Esta propiedad
proporciona una forma sencilla de determinar si los controles de entrada de
datos en el formulario Web Form son vlidos y si el formulario Web Form est
preparado para seguir con la lgica de negocio.
Los controles de validacin verifican las entradas del usuario, establecen un
estado de error y producen mensajes de error. Sin embargo, los controles de
validacin no cambian el flujo de procesamiento de pginas. Por ejemplo, los
controles de validacin no evitan nuestro cdigo si detectan un error en los
datos introducidos por el usuario. En lugar de ello, probamos el estado de los
controles en nuestro cdigo antes de realizar lgica especfica de aplicacin. Si
detectamos un error, evitamos que nuestro cdigo se ejecute; la pgina seguir
procesndose y se devuelve al usuario con mensajes de error.
La informacin de validacin no est disponible durante la inicializacin
de una pgina o durante la fase de carga. Para obtener informacin sobre los
estados de pgina, examinar Estados de procesamiento de pginas de
formularios Web Forms en la documentacin de Visual Studio .NET.
Introduccin
Uso de la propiedad
Page.IsValid
Nota
32 Validacin de entrada de datos de usuario
El siguiente ejemplo muestra el controlador de eventos de un botn. El cdigo
verifica la propiedad IsValid de toda la pgina. No es necesario para una
clusula Else, ya que la pgina ser enviada de vuelta automticamente al
navegador y los controles de validacin mostrarn sus propios mensajes de
error:
Sub cmdSubmit_Click (s As Object, e As EventArgs)
If Page.IsValid Then
Message.Text = "Page is valid!"
' Perform database updates or other logic here
End If
End Sub
private void cmdSubmit_Click(object s, System.EventArgs e)
{
if (Page.IsValid)
{
Message.Text = "Page is Valid!";
// Perform database updates or other logic here
}
}
Ejemplo
Visual Basic .NET
C#
Validacin de entrada de datos de usuario 33
Uso del control ValidationSummary
Recopila los mensajes de error de todos los controles
de validacin de la pgina
Puede mostrar mensajes de texto y de error
Utilizar Text="*" para indicar la ubicacin del error
<asp:ValidationSummary id="valSummary"
runat="server"
HeaderText="These errors were found:"
ShowSummary="True"
DisplayMode="List"/>
<asp:ValidationSummary id="valSummary"
runat="server"
HeaderText="These errors were found:"
ShowSummary="True"
DisplayMode="List"/>
***************************** use******************************
El control ValidationSummary muestra cuando la propiedad Page.IsValid
devuelve False. Se contacta con cada control de validacin de la pgina y el
control ValidationSummary rene los mensajes de ErrorMessage.
El control ValidationSummary puede mostrar un cuadro de mensaje o un rea
de texto, con un encabezado y una lista de errores, dependiendo del valor
DisplayMode, podemos mostrar la lista de errores como una lista de vietas o
un nico prrafo. Los controles ValidationSummary se ubican normalmente
cerca del botn Submit de forma que todos los mensajes de error sean
fcilmente visibles para el usuario cuando se disparen los controles de
validacin de entrada de datos.
El siguiente cdigo HTML muestra un control ValidationSummary tpico:
<asp:ValidationSummary id="valSummary"
runat="server"
HeaderText="These errors were found:"
ShowSummary="True"
DisplayMode="List" />
Cuando se utiliza el control ValidationSummary, la propiedad Text (si se
utiliza) se muestra en la ubicacin del control de validacin, mientras que la
propiedad ErrorMessage se muestra en la presentacin del control
ValidationSummary.
Normalmente, se muestra una propiedad Text con un asterisco (*) rojo a la
derecha del control de entrada de datos para avisar al usuario de que el control
de entrada de datos no se ha cumplimentado correctamente. En el control
ValidationSummary, se muestra una propiedad ErrorMessage, con una
descripcin del error de entrada de datos, que normalmente se ubica cerca del
evento que dispara el control.
Introduccin
Muestra mensajes de
texto y de error
Uso de * para localizar
errores
34 Validacin de entrada de datos de usuario
La siguiente ilustracin muestra un par de campos de contrasea con varios
controles de validacin de entrada de datos y un control ValidationSummary.
Ejemplo
Validacin de entrada de datos de usuario 35
Demostracin: uso de la propiedad Page.IsValid y del control
ValidationSummary
Abrir una pgina ASP.NET con mltiples
cuadros de texto y controles de
validacin
Agregar un control ValidationSummary
Agregar un scriptque utilice la propiedad
Page.IsValid
***************************** use******************************
En esta demostracin, veremos cmo utilizar el mtodo Page.IsValid y el
control Validation Summary.
Los campos de esta demostracin se encuentran en el proyecto Demo06VB o
Demo06CS que se pueden encontrar dentro del fichero demos06.zip
Ejecutar esta demostracin
1. Abrir el formulario Web Form denominado ValidationSummary.aspx en
Visual Studio .NET.
La pgina ya contiene dos controles TextBox. Hay un control
RequiredFieldValidator y un control RangeValidator, que validan el
primer cuadro de texto. La pgina tambin contiene un control
RequiredFieldValidator y un control RegularExpressionValidator, que
validan el segundo cuadro de texto. Adems, hay un botn Submit y un
Label.
2. Arrastrar el control ValidationSummary a la parte inferior de la pgina.
3. Hacer doble clic en el control Button para abrir el controlador de eventos
Click, y eliminar el comentario del siguiente cdigo:
If Page.IsValid Then
lblMessage.Text = "Page is valid!"
End If
Introduccin
Abrir una pgina
ASP.NET
Agregar un control
Validation
Summary
Agregar cdigo para
probar la validez de la
pgina
Visual Basic .NET
C#
36 Validacin de entrada de datos de usuario
if (Page.IsValid)
{
lblMessage.Text = "Page is valid!";
}
4. Guardar, generar y examinar la pgina ValidationSummary.aspx.
Deberamos ver el mensaje Page is valid! cuando toda la pgina sea vlida.
ndice
Descripcin 1
Leccin: agregar controles de usuario a un formulario
Web Form ASP.NET 2
Leccin: crear controles de usuario 12
Creacin de controles de usuario
Creacin de controles de usuario 1
Descripcin
Agregar controles de usuario a un formulario Web
FormASP.NET
Crear controles de usuario
***************************** ******************************
Adems de Hypertext Markup Language (HTML) y los controles de servidor
Web, podemos crear fcilmente nuestros propios controles que pueden ser
reutilizados en las aplicaciones Web. Estos controles se denominan controles de
usuario. Los controles de usuario proporcionan un modo fcil de reutilizar
componentes habituales de la interfaz de usuario y cdigo en una aplicacin
Web.
En este mdulo, aprenderemos a:
Agregar un control de usuario a un formulario MicrosoftASP.NET.
Crear un control de usuario.
Introduccin
Objetivos
2 Creacin de controles de usuario
Leccin: agregar controles de usuario a un formulario
Web FormASP.NET
Ques uncontrol de usuario?
Por quutilizar controles deusuario?
Prctica: hacer unalistadecontroles deusuario
Agregar uncontrol deusuario
Demostracin: Crear uncontrol deusuario
***************************** ******************************
Un control de usuario es una pgina ASP.NET que otro formulario Web Form
ASP.NET puede importar como un control de servidor. De modo similar a los
controles de servidor Web, que son componentes que se ejecutan en el servidor,
los controles de usuario proporcionan interfaz de usuario y dems
funcionalidades relacionadas. Una vez creado un control de usuario, ste puede
ser utilizado por otras pginas de la misma aplicacin Web.
En esta leccin, estudiaremos qu son los controles de usuario, porqu
deberamos pensar en utilizarlos en nuestras aplicaciones Web, cmo
referenciar un control de usuario desde un formulario Web Form ASP.NET, y
cmo acceder a las propiedades de un control de usuario.
En esta leccin, aprenderemos a:
Explicar qu es un control de usuario y por qu deberamos utilizar uno.
Agregar un control de usuario a una pgina ASP.NET.
Acceder a las propiedades de los controles de usuario de una pgina
ASP.NET.
Introduccin
Objetivos de la leccin
Creacin de controles de usuario 3
Qu es un control de usuario?
Los controles de usuario simplifican la reutilizacin de
cdigo y componentes de la IUen una aplicacin Web
Un control de usuario es un control de servidor Web
definido por el usuario con una extensin .ascx
Contiene HTML, pero no las etiquetas <HTML>,
<BODY>, o <FORM>
utilizando los objetos SqlConnection y SqlDataAdapter.
Utilizar objetos DataSet para soportar los requerimientos de
almacenamiento y manipulacin de datos locales de los formularios Web
Forms.
Almacenar mltiples tablas de datos en un objeto DataSet, y mostrar los
datos en controles DataGrid.
Leer datos programticamente de una base de datos SQL utilizando un
objeto SqlDataReader.
Introduccin
Objetivos de la leccin
2 Acceso a datos con Microsoft ADO.NET
Leccin: introduccin al uso de ADO.NET
Multimedia: modelode objetos ADO.NET
Utilizar DataSetsfrente a DataReaders
Prctica: cundo utilizar DataSetso DataReaders
*****************************
ADO.NET est diseado para cargar datos desde una fuente de datos y trabajar
con esos datos en modo desconectado. Este estado de desconexin permite al
formulario Web Form operar de forma semi-independiente de las fuentes de
datos, reduciendo as el trfico de red. ADO.NET utiliza Extensible Markup
Language (XML) como formato universal de transmisin de datos, lo cual
garantiza la interoperabilidad con cualquier plataforma donde est disponible
un parser XML.
En esta leccin, estudiaremos el uso del modelo de objetos de ADO.NET para
acceder a datos. Tambin estudiaremos cmo utilizar los objetos DataSet y
DataReader para acceder a datos.
En esta leccin, aprenderemos a:
Describir el acceso a datos de los objetos DataSet y DataReader.
Escoger entre los objetos DataSet y DataReader, dependiendo de las
necesidades de acceso a datos de una aplicacin Web.
Introduccin
Objetivos de la leccin
Acceso a datos con Microsoft ADO.NET 3
Uso de DataSets frente a DataReaders
Soportado por las herramientas
de Visual Studio .NET
Acceso ms lento
Slo hacia delante
Vinculado a un nico control
Basado en una instruccin SQL
de una base de datos
Slo lectura
Codificacin manual
Acceso ms rpido
Bsqueda de datos hacia
delante y hacia atrs
Vinculado a mltiples controles
Incluye mltiples tablas de
distintas bases dedatos
Acceso lectura/escritura a
datos
DataReader DataSet
Desconectado Conectado
*****************************
Los objetos DataSet son objetos complejos que nos permiten almacenar
mltiples tablas de datos DataTables desde una fuente de datos. Los objetos
DataSet son como una base de datos virtual ubicada dentro de una aplicacin
Web. Los objetos DataSet tambin pueden contener relaciones entre los datos
de las DataTables, y pueden utilizar esas relaciones para recuperar datos.
Los objetos DataReader son objetos ligeros que se utilizan para leer datos
desde una fuente de datos; los objetos DataReader proporcionan acceso slo
hacia delante (forward-only) y de slo lectura (read-only) a los datos de una
base de datos.
La eleccin entre utilizar objetos DataSet u objetos DataReader debera
basarse en el uso previsto para los datos. Normalmente, los objetos
DataReader se utilizan para leer datos en situaciones en las que es necesario el
acceso una nica vez, y de solo lectura, como cuando accedemos a una
contrasea almacenada, o se cumplimenta un control enlazado a una lista. Los
objetos DataSet se utilizan para un acceso a datos ms complejo, como el
acceso a todo el historial de pedidos de un cliente.
Algunos de los aspectos relativos al acceso a datos que se deben tener en cuenta
a la hora de decidir entre objetos DataSet y DataReader incluyen:
Acceso a datos
Si nuestra intencin es leer y escribir a nuestra fuente de datos, debemos
utilizar un objeto DataSet. Los objetos DataReader son conexiones de slo
lectura y deberan utilizarse nicamente cuando los datos vayan a utilizarse
en una situacin de slo lectura.
Acceso a mltiples bases de datos
Si nuestra intencin es combinar tablas de una o ms bases de datos,
debemos utilizar un objeto DataSet. Los objetos DataReader se basan en
una nica instruccin SQL de una sola base de datos.
Enlace a controles
Introduccin
Uso de DataSets y
DataReaders
4 Acceso a datos con Microsoft ADO.NET
Si nuestra intencin es enlazar los datos a ms de un control, debemos
utilizar un objeto DataSet. Los objetos DataReader slo pueden vincularse
a un nico control.
Modo conexin
Si nuestra intencin es trabajar en un modo desconectado, debemos utilizar
un objeto DataSet. Los objetos DataReader deben ejecutarse en modo
conectado.
Bsqueda (scanning) de datos
Si nuestra intencin es buscar los datos hacia atrs y hacia delante, debemos
utilizar un objeto DataSet. Los objetos DataReader buscan hacia adelante a
medida que los datos fluyen desde la base de datos.
Velocidad de acceso
Si necesitamos acceso de alta velocidad a nuestra fuente de datos,
utilizaremos un objeto DataReader. Los objetos DataSet son ms lentos
que los objetos DataReader en el acceso a una base de datos, debido a que
los objetos DataSet almacenan los datos en un objeto del servidor Web.
Tambin la sobrecarga es mayor en la creacin del objeto DataSet debido a
la capacidad de leer y escribir datos y bsqueda hacia delante y hacia atrs.
Los objetos DataReader son ms rpidos debido a la naturaleza del objeto
ms ligera. Hay muy poca sobrecarga para el objeto DataReader, ya que
ste trabaja slo hacia delante y slo de lectura.
Soporte de herramientas
Si nuestra intencin es utilizar Microsoft Visual Studio .NET para crear la
conexin a datos, utilizaremos objeto DataSet. Con los objetos DataSet,
podemos elegir entre escribir nuestro propio cdigo o utilizar el cdigo
mquina de Visual Studio .NET. Con los objetos DataReader, debemos
escribir todo el cdigo de soporte.
Acceso a datos con Microsoft ADO.NET 5
Prctica: cundo utilizar DataSets o DataReaders
Los estudiantes:
Seleccionarn la mejor opcin de acceso
a datos para determinados escenarios
Tiempo: 5 minutos
*****************************
Leer los siguientes escenarios, y decidir si es mejor utilizar un objeto
DataSet o un objeto DataReader
Deseamos obtener informacin de dos tablas que se encuentran en dos bases
de datos distintas, y mostrar las tablas al usuario.
____________________________________________________________
____________________________________________________________
Deseamos obtener informacin de una tabla en una base de datos, permitir
al usuario modificar los datos y almacenar esos cambios en la base de datos.
____________________________________________________________
____________________________________________________________
Deseamos obtener informacin de dos tablas de la misma base de datos y
mostrar esa informacin al usuario.
____________________________________________________________
____________________________________________________________
Deseamos obtener informacin de una tabla de una base de datos y dejar al
usuario visualizar los datos en mltiples configuraciones distintas.
____________________________________________________________
____________________________________________________________
6 Acceso a datos con Microsoft ADO.NET
Leccin: conexin a una base de datos
Seguridad SQL Server
Crear la conexin
Demostracin: establecer la seguridad SQL Server
*****************************
El primer paso en el uso de una base de datos para soportar nuestra aplicacin
Web es crear una conexin segura a la base de datos. Las conexiones no
seguras pueden exponer a ataques mal intencionados tanto la aplicacin Web
como la base de datos.
En esta leccin, aprenderemos a crear conexiones seguras a una base de datos
SQL Server utilizando los objetos SqlConnection y SqlDataAdapter.
En esta leccin, aprenderemos a:
Explicar la diferencia entre el modo mixto y la autenticacin slo Windows.
Crear una conexin, con autenticacin slo Windows, a una base de datos
SQL Server.
Introduccin
Objetivos de la leccin
Acceso a datos con Microsoft ADO.NET 7
Seguridad SQL Server
Cliente Cliente
Enviar el nombre de
usuario y contrasea
en texto claro.
No enviar el nombre de
usuario y contrasea.
Enviar slo que el
usuario ha sido
autenticado.
Autenticacin
modo mixto
Autenticacin
modo mixto
Autenticacin
slo Windows
Autenticacin
slo Windows
Servidor SQL
Slo la cuenta ASPNET
tiene concedido acceso
Servidor SQL
Slo la cuenta ASPNET
tiene concedido acceso
Servidor Web
Autenticacin Windows
Servidor Web
Autenticacin Windows
o
o
Servidor SQL
Cada cuenta de usuario se
agrega a grupo loginde SQL Server
Servidor SQL
Cada cuenta de usuario se
agrega a grupo loginde SQL Server
Servidor Web
Configuracin ASP.NET
predeterminada
Servidor Web
Configuracin ASP.NET
predeterminada
Aqu est el
nombre de usuario
y la contrasea
*****************************
Desde la perspectiva del usuario, el acceso a datos desde una base de datos SQL
Server es un proceso en dos pasos. En primer lugar, el usuario enva una
peticin a la aplicacin Web, y sta se conecta a la base de datos SQL Server
para satisfacer la solicitud. Existen dos mtodos principales para que una
aplicacin Web se conecte a una base de datos SQL Server: autenticacin en
modo mixto y autenticacin en modo slo Windows. El mtodo ms utilizado
es la autenticacin slo Windows.
La autenticacin en modo mixto utiliza la configuracin predeterminada de
ASP.NET y de la aplicacin Web. Cada usuario de la aplicacin Web debe
tener una cuenta de usuario aadida al grupo logins de SQL Server. El punto
dbil de la autenticacin en modo mixto es que los nombres de usuario y las
contraseas se envan al equipo que ejecuta SQL Server en cdigo HTML no
encriptado. Estos datos expuestos podran permitir a terceros obtener las
credenciales de inicio de sesin. Adems, es necesario administrar cuentas de
usuario tanto en el servidor Web como en el equipo que ejecuta SQL Server.
Para utilizar la autenticacin en modo mixto, configurar SQL Server en modo
de autenticacin mixto (SQL Server y Windows). El siguiente cdigo puede
utilizarse para conectar a un SQL Server con autenticacin en modo mixto:
Dim strConn As String = _
"data source=localhost; " & _
"initial catalog=northwind; " & _
"user id=CohoUser;password=1Coho"
Dim conn As New SqlConnection(strConn)
string strConn =
"data source=localhost; " +
"initial catalog=northwind; " +
"user id=CohoUser; " +
"password=1Coho";
SqlConnection conn = new SqlConnection(strConn);
Introduccin
Autenticacin En modo
mixto
Visual Basic .NET
C#
8 Acceso a datos con Microsoft ADO.NET
Utilizar la autenticacin en modo mixto para acceder a SQL Server
desde una aplicacin Web es un riesgo de seguridad y no est recomendado. La
autenticacin en modo mixto se describe aqu como una tcnica que puede
utilizarse durante el desarrollo de la aplicacin Web.
La autenticacin en modo slo Windows es el mtodo ms utilizado para
conectar una aplicacin Web a una base de datos SQL Server. Cuando
utilizamos la autenticacin en modo slo Windows, SQL Server no necesita el
nombre de usuario y la contrasea. Slo se requiere una confirmacin de que el
usuario ha sido autenticado por una fuente de confianza para procesar la
peticin a la base de datos.
El proceso de la autenticacin en modo slo Windows utiliza una sola cuenta
denominada ASPNET para todos los accesos a SQL Server desde la aplicacin
Web. Esta nica cuenta elimina los problemas de transmitir nombres de usuario
y contraseas no encriptados entre la aplicacin Web y SQL Server, junto con
la necesidad de mantener cuentas de usuario en ambos servidores.
Con la autenticacin en modo slo Windows, los usuarios acceden al
formulario Web Form como usuarios annimos. ASP.NET se conecta a SQL
Server y se autentica utilizando la cuenta de usuario ASPNET. Los datos
solicitados son devueltos por SQL Server y utilizados por la aplicacin Web.
Finalmente, el formulario Web Form que incluye los datos solicitados se
devuelven al usuario.
Para utilizar la autenticacin en modo slo Windows, configuramos SQL
Server con la autenticacin en modo slo Windows. El siguiente cdigo puede
utilizarse para conectar a un SQL Server con autenticacin en modo slo
Windows:
Dim strConn As String = _
"data source=localhost; " & _
"initial catalog=northwind; " & _
"integrated security=true"
Dim conn As New SqlConnection(strConn)
string strConn =
"data source=localhost; " +
"initial catalog=northwind; " +
"integrated security=true";
SqlConnection conn = new SqlConnection(strConn);
Aviso
Autenticacin slo
Windows
Visual Basic .NET
C#
Acceso a datos con Microsoft ADO.NET 9
Cuando utilizamos la autenticacin en modo slo Windows, podemos mantener
a SQL Server en el modo de autenticacin predeterminado de slo Windows. Si
utilizamos la autenticacin en modo mixto, necesitamos modificar el modo de
autenticacin de SQL Server.
Cambiar el modo de autenticacin de SQL Server
1. En el men Inicio, hacer clic con el botn derecho en Mi PC y clic en
Administrar.
2. En la consola Administracin de equipos, expandir la carpeta Servicios y
Aplicaciones y la carpeta Servidores Microsoft SQL Server.
3. Hacer clic con el botn derecho en el servidor SQL Server (local) y clic en
Propiedades.
4. En el cuadro de dilogo Propiedades de SQL Server, en la ficha
Seguridad, hacer clic en el botn de opcin SQL Server y Windows o la
opcin slo Windows de la seccin Autenticacin, y hacer clic en
Aceptar.
Para ms informacin sobre securizar una aplicacin Web, ver el Mdulo
Securizar una aplicacin Web con Microsoft ASP.NET.
Configurar el SQL
Server para ejecutar
autenticacin
en modo mixto o slo
Windows
Nota
10 Acceso a datos con Microsoft ADO.NET
Crear la conexin
Uso de SqlConnection
Establecer los parmetros de la cadena de conexin
Timeout de conexin
Fuente de datos
Catlogo inicial
Seguridad integrada
Dim strConn As String = "data source=localhost; " & _
"initial catalog=northwind; integrated security=true"
Dim conn As New SqlConnection(strConn)
Dim strConn As String = "data source=localhost; " & _
"initial catalog=northwind; integrated security=true"
Dim conn As New SqlConnection(strConn)
Contrasea
Persistir informacin seguridad
Proveedor
ID de usuario
string strConn = "data source=localhost; " +
"initial catalog=northwind; integrated security=true";
SqlConnection conn = new SqlConnection(strConn);
string strConn = "data source=localhost; " +
"initial catalog=northwind; integrated security=true";
SqlConnection conn = new SqlConnection(strConn);
*****************************
Para mover datos entre una base de datos y nuestra aplicacin Web, en primer
lugar debemos crear una conexin a la base de datos. Para ello, debemos
identificar el nombre del servidor de base de datos, el nombre de la base de
datos, y la informacin de inicio de sesin requerida.
Dependiendo del tipo de base de datos al que accedamos, podemos utilizar un
objeto SqlConnection o un objeto OleDbConnection. Utilizamos un objeto
SqlConnection para conectar a bases de datos SQL Server 7.0 o posterior, y
objetos OleDbConnection para conectar al resto de bases de datos.
Creamos un objeto SqlConnection pasando una cadena de conexin que
proporciona los parmetros necesarios para crear una conexin a una fuente de
datos.
El siguiente cdigo de ejemplo crea un objeto SQLConnection a la base de
datos SQL Server Northwind:
Dim strConn As String = _
"data source=localhost; " & _
"initial catalog=northwind; " & _
"integrated security=true"
Dim conn As New SqlConnection(strConn)
string strConn =
"data source=localhost; " +
"initial catalog=northwind; " +
"integrated security=true";
SqlConnection conn = new SqlConnection(strConn);
Introduccin
Crear una cadena de
conexin
Visual Basic .NET
C#
Acceso a datos con Microsoft ADO.NET 11
La siguiente tabla describe algunos de los parmetros ms habituales de un
objeto de conexin:
Parmetro Descripcin
Connection Timeout El intervalo de tiempo de espera en segundos en una conexin
al servidor antes de finalizar el intento y generar una
excepcin. 15 segundos es el tiempo predeterminado.
Data Source El nombre del servidor SQL Server utilizado cuando se abre
una conexin, o el nombre del archivo que se utiliza cuando en
la conexin a una base de datos Microsoft Access.
Initial Catalog El nombre de la base de datos.
Integrated Security El parmetro que determina si la conexin es o no segura. Los
valores posibles son True, False y SSPI. SSPI es el
equivalente a True.
Password La contrasea de inicio de sesin en la base de datos SQL
Server.
Persist Security Info Cuando est establecido a False no se devuelve informacin
sensible a la seguridad (como la contrasea) como parte de la
conexin, si la conexin est abierta o ha estado en un estado
abierto. Establecer esta propiedad a True puede constituir un
riesgo de seguridad. La configuracin predeterminada es False.
Provider La propiedad que se utiliza para establecer o devolver el
nombre del proveedor de la conexin; este parmetro se utiliza
nicamente para objetos OleDbConnection.
User ID El nombre de cuenta de inicio de sesin de SQL Server.
Parmetros de la cadena
de conexin
12 Acceso a datos con Microsoft ADO.NET
Demostracin: establecer la seguridad de SQL Server
Abrir SQL Server EnterpriseManager
Establecer el modo
de autenticacin
Probar con seguridad
integrada
Probar con seguridad
en modo mixto
*****************************
En esta demostracin, veremos cmo establecer y probar una conexin de
seguridad integrada entre una aplicacin Web y un SQL Server.
Ejecutar esta demostracin
1. En el men Inicio, hacer clic con el botn derecho en Mi PC y clic en
Administrar.
2. En la consola Administracin de equipos, expandir la carpeta Servicios y
aplicaciones y expandir la carpeta Servidores Microsoft SQL Server.
3. Hacer clic con el botn derecho en el servidor SQL Server (local) y clic en
Propiedades.
4. En el cuadro de dilogo Propiedades de SQL Server, en la ficha
Seguridad, hacer clic en el botn de opcin Slo Windows de la seccin
Autenticacin y hacer clic en Aceptar.
5. Abrir el formulario Web Form SQLSecurityModes.aspx del proyecto
Demo08VB o Demo08CS ue se pueden encontrar dentro del fichero
demos08.zip
6. Generar y examinar la pgina SQLSecurityModes.aspx.
7. Hacer clic en Utilizar seguridad integrada, y clic en Get Data.
Los datos se recuperan de la base de datos y se muestran en el control
DataGrid.
8. Hacer clic en Utilizar seguridad estndar, y clic en Get Data.
Obtenemos un error porque el usuario no existe en el SQL Server.
9. Crear un nuevo usuario para SQL Server:
a. En la consola Gestin de equipos, expandir la carpeta SQL Server
(local) y expandir la carpeta Seguridad.
b. Hacer clic con el botn derecho en Logins y hacer clic en Nuevo Login.
Introduccin
Abrir SQL Server
Enterprise Manager
Establecer el modo de
autenticacin
Prueba con seguridad
integrada
Acceso a datos con Microsoft ADO.NET 13
c. En el cuadro de dilogo Propiedades de login de SQL Server, escribir
CohoUser en el campo Nombre, hacer clic en Autenticacin SQL
Server en la seccin Autenticacin, escribir 1Coho en el campo
Contrasea, y hacer clic en Aceptar.
d. Teclear 1Coho en el cuadro de dilogo Confirmar contrasea, y hacer
clic en Aceptar.
10. Cambiar el modo de autenticacin de SQL Server a modo mixto.
a. En la consola Gestin de equipos, hacer clic con el botn derecho en
SQL Server (local) y clic en Propiedades.
b. En el cuadro de dilogo Propiedades de SQL Server, en la ficha
Seguridad, hacer clic en el botn de opcin SQL Server y Windows de
la seccin Autenticacin, y hacer clic en Aceptar.
c. A la pregunta de si es necesario reiniciar el servicio SQL Server, hacer
clic en S.
11. Visualizar la pgina SQLSecurityModes.aspx en el navegador de nuevo y
probar ambos mtodos para acceder a SQL Server. Ahora, funcionarn los
dos mtodos.
Prueba con seguridad
en modo mixto
14 Acceso a datos con Microsoft ADO.NET
Leccin: acceso a datos con DataSets
Crear un DataAdapter
Crear un DataSet
Demostracin: utilizar programticamente un DataSet
Utilizar un DataView
Prctica: organizar cdigo para crear un DataSet
Vincular un DataSeta un control enlazado a lista
Prctica dirigida por el instructor: visualizarun
DataSet
Gestin de errores
*****************************
El objeto DataSet representa una copia local de los datos que provienen de una
o ms fuentes de datos. El uso de un objeto DataSet permite que un formulario
Web Form se ejecute de forma semi-independiente de las fuentes de datos. El
objeto DataSet puede utilizar un objeto DataAdapter para cargar los datos de
una fuente de datos y puede desconectarse de la misma. El usuario puede
entonces utilizar y manipular los datos. Cuando los datos necesitan ser
actualizados contra la fuente de datos, se utiliza un objeto DataAdapter para
volver a conectarse y actualizar la fuente de datos.
En esta leccin, estudiaremos cmo utilizar los objetos DataSet para soportar el
almacenamiento local de datos y los requerimientos de manipulacin de los
formularios Web Forms.
En esta leccin, aprenderemos a:
Crear un objeto DataAdapter para enlazar un objeto DataSet a una fuente
de datos.
Crear un objeto DataSet para guardar datos de una fuente de datos.
Utilizar objetos DataView para guardar un subconjunto de datos de un
objeto DataSet.
Vincular un objeto DataSet y un objeto DataView a un control enlazado a
lista.
Gestionar los errores tpicos que nos encontramos en el acceso a datos.
Introduccin
Objetivos de la leccin
Acceso a datos con Microsoft ADO.NET 15
Crear un DataAdapter
Almacenar la consulta en un DataAdapter
El constructor DataAdapterestablece la propiedad
SelectCommand
Establecer las propiedades InsertCommand,
UpdateCommandy DeleteCommandsi fuera necesario
Dim da As New SqlDataAdapter _
("select * from Authors", conn)
Dim da As New SqlDataAdapter _
("select * from Authors", conn)
da.SelectCommand.CommandText
da.SelectCommand.Connection
da.SelectCommand.CommandText
da.SelectCommand.Connection
SqlDataAdapter da = new SqlDataAdapter
("select * from Authors",conn);
SqlDataAdapter da = new SqlDataAdapter
("select * from Authors",conn);
da.SelectCommand.CommandText;
da.SelectCommand.Connection;
da.SelectCommand.CommandText;
da.SelectCommand.Connection;
*****************************
El objeto DataSet representa una copia local de datos de una fuente de datos.
Cuando se utiliza sin una fuente de datos, el objeto DataSet resulta til para
guardar datos locales a los cuales pueden acceder los formularios Web Forms.
Sin embargo, para actuar como una herramienta de gestin de datos real, un
objeto DataSet debe poder interactuar con una o ms fuentes de datos. Para
conseguir esta interaccin, el .NET Framework proporciona las clases
SqlDataAdapter y OleDbDataAdapter.
Un objeto DataAdapter acta como enlace entre un objeto DataSet y una
fuente de datos que puede utilizarse para recuperar y guardar datos. La clase
DataAdapter representa un conjunto de comandos de base de datos y una
conexin a una base de datos que utilizamos para rellenar un objeto DataSet y
actualizar la fuente de datos. Cada objeto DataAdapter intercambia datos entre
un nico objeto DataTable en un objeto DataSet y un nico conjunto de
resultados de una instruccin SQL o un procedimiento almacenado.
Visual Studio .NET pone a disposicin dos clases principales DataAdapter
para su uso con bases de datos:
ClaseOleDbDataAdapter
Esta clase es adecuada para utilizarse con cualquier fuente de datos expuesta
por un OLE DB Data Provider.
ClaseSqlDataAdapter
Esta clase es especfica para una base de datos SQL Server versin 7.0 o
posterior. El objeto SqlDataAdapter es ms rpido que el objeto
OleDbDataAdapter porque funciona directamente con SQL Server y no
debe funcionar a travs de una capa OLE DB Data Provider.
Adems, las clases DataAdapter para otros tipos de fuentes de datos pueden
integrarse con Visual Studio .NET.
Introduccin
DataAdapter
16 Acceso a datos con Microsoft ADO.NET
Cuando utilizamos objetos DataAdapter para intercambiar datos entre un
objeto DataSet y una fuente de datos, podemos especificar las acciones que
deseamos realizar utilizando una de las cuatro propiedades DataAdapter. Las
propiedades DataAdapter ejecutan una instruccin SQL o invocan un
procedimiento almacenado.
Las propiedades que estn disponibles con la clase DataAdapter se muestran
en la siguiente tabla.
Propiedad Funcin
SelectCommand La propiedad SelectCommand recupera filas de la fuente de
datos.
InsertCommand La propiedad InsertCommand escribe filas insertadas del
DataSet a la fuente de datos.
UpdateCommand La propiedad UpdateCommand escribe filas modificadas del
DataSet a la fuente de datos.
DeleteCommand La propiedad DeleteCommand elimina filas en la fuente de
datos.
El siguiente cdigo de ejemplo muestra cmo crear un objeto SqlDataAdapter
denominado da que contiene una sentencia de consulta:
'Create a connection
Dim conn As New SqlConnection _
("data source=localhost;initial catalog=pubs;" & _
"integrated security=true;persist security info=True;")
'Create the DataAdapter
Dim da As New SqlDataAdapter _
("select * from Authors", conn)
//Create a connection
SqlConnection conn = new SqlConnection
("data source=localhost; initial catalog=pubs; " +
"integrated security=true; persist security info=True;");
//Create the DataAdapter
SqlDataAdapter da = new SqlDataAdapter
("select * from Authors", conn);
Propiedades del
DataAdapter
Ejemplo de
SqlDataAdapter
Visual Basic .NET
C#
Acceso a datos con Microsoft ADO.NET 17
Crear un DataSet
Crear y poblar un DataSetcon DataTables
El mtodo Fillejecuta el SelectCommand
Acceder a DataTable
Dim ds As New DataSet()
da.Fill(ds, "Authors")
Dim ds As New DataSet()
da.Fill(ds, "Authors")
Dim r As DataRow
Dim str As String
For Each r in _
ds.Tables("Authors").Rows
str &= r(2)
str &= r("au_lname")
Next
Dim r As DataRow
Dim str As String
For Each r in _
ds.Tables("Authors").Rows
str &= r(2)
str &= r("au_lname")
Next
ds.Tables("Authors").Rows.Count
ds.Tables("Authors").Rows.Count
DataSet ds = new DataSet();
da.Fill(ds, "Authors");
DataSet ds = new DataSet();
da.Fill(ds, "Authors");
ds.Tables["Authors"].Rows.Count;
ds.Tables["Authors"].Rows.Count;
string str="";
foreach(DataRow r in
ds.Tables["Authors"].Rows)
{
str += r[2];
str += r["au_lname"];
}
string str="";
foreach(DataRow r in
ds.Tables["Authors"].Rows)
{
str += r[2];
str += r["au_lname"];
}
*****************************
Para crear una copia local de una base de datos, creamos y poblamos un objeto
DataSet utilizando objetos DataTable.
El primer paso para crear un objeto DataSet es declarar el nombre del objeto
DataSet. El siguiente cdigo crea un objeto DataSet denominado ds:
Dim ds As New DataSet()
DataSet ds = new DataSet();
Tras crear un objeto DataSet, rellenamos los objetos DataTable creando un
objeto DataAdapter. Invocamos el mtodo Fill en el objeto DataAdapter y
especificamos el objeto DataTable que deseamos rellenar. El siguiente cdigo
rellena la tabla Authors del objeto DataSet ds utilizando un DataAdapter
denominado da:
da.Fill(ds, "Authors")
da.Fill(ds, "Authors");
El mtodo Fill ejecuta implcitamente una consulta SQL en la propiedad
SelectCommand del objeto DataAdapter. Los resultados de la consulta SQL
se utilizan para definir la estructura del objeto DataTable, y para poblar la tabla
con datos.
Introduccin
Crear a DataSet
Visual Basic .NET
C#
Rellenar el DataSet
Visual Basic .NET
C#
18 Acceso a datos con Microsoft ADO.NET
El siguiente cdigo de ejemplo muestra cmo crear un objeto SqlDataAdapter
da, e invocar a continuacin el mtodo Fill para almacenar los datos en el
objeto DataSet ds.
'Create a connection
Dim conn As New SqlConnection _
("data source=localhost;initial catalog=pubs;" & _
"integrated security=SSPI;persist security info=True;")
'Create the DataSet
Dim ds As New DataSet()
'Create the DataAdapter
Dim da As New SqlDataAdapter _
("select * from Authors", conn)
'Fill the DataSet ds
da.Fill(ds, "Authors")
//Create a connection
SqlConnection conn = new SqlConnection
("data source=localhost;initial catalog=pubs; " +
"integrated security=SSPI;persist security info=True;");
//Create the DataSet
DataSet ds = new DataSet();
//Create the DataAdapter
SqlDataAdapter da = new SqlDataAdapter
("select * from Authors", conn);
//Fill the DataSet ds
da.Fill(ds, "Authors");
El segundo argumento del mtodo Fill es un nombre para el objeto DataTable
que est creado. Utilizamos este nombre para acceder a los datos devueltos.
Una vez insertados los datos en un objeto DataSet, podemos acceder
programticamente a los datos. Como muestra el siguiente cdigo, cada objeto
DataSet est formado por uno o ms objetos DataTable a los que podemos
hacer referencia por su nombre o posicin ordinal:
ds.Tables("Authors")
-o-
ds.Tables(0)
ds.Tables["Authors"];
-o-
ds.Tables[0];
Visual Basic .NET
C#
Acceder a DataTable
Visual Basic .NET
C#
Acceso a datos con Microsoft ADO.NET 19
Las clases DataRow y DataColumn son los componentes principales de una
clase DataTable. Utilizaramos un objeto DataRow con sus propiedades y
mtodos para recuperar y evaluar los valores de un objeto DataTable.
DataRowCollection representa los objetos DataRow reales que se encuentran
en el objeto DataTable, y DataColumnCollection contiene los objetos
DataColumn que describen el esquema del objeto DataTable. La propiedad
Rows del objeto DataTable proporciona acceso programtico a
DataRowCollection. La propiedad Columns del objeto DataTable
proporciona acceso programtico a DataColumnCollection.
El siguiente cdigo de ejemplo agrega los nombres de columnas de un objeto
DataSet al control ListBox denominado lstItems:
Dim col As DataColumn
For Each col In ds.Tables(0).Columns
lstItems.Items.Add(col.ColumnName)
Next
foreach(DataColumn col in ds.Tables[0].Columns)
{
lstItems.Items.Add(col.ColumnName);
}
Tanto el objeto DataRowCollection como el objeto DataColumnCollection
tienen una propiedad Count que nos permite determinar el nmero de filas o
columnas de un objeto DataTable, como muestra el siguiente cdigo de
ejemplo:
ds.Tables("Authors").Rows.Count
ds.Tables("Authors").Columns.Count
ds.Tables["Authors"].Rows.Count;
ds.Tables["Authors"].Columns.Count;
Contar las filas y columnas del objeto DataTable nos permite acceder a campos
individuales del objeto DataTable. Podemos acceder a campos por posicin
ordinal (basada-en-0) o por el nombre. En el siguiente cdigo, x es el ndice de
la fila de datos a la que deseamos acceder:
DataSet.Tables(0).Rows(x)(1)
DataSet.Tables(0).Rows(x)("fieldname")
ds.Tables["Authors"].Rows[x][1];
ds.Tables["Authors"].Rows[x]["fieldname"];
Visual Basic .NET
C#
Visual Basic .NET
C#
Visual Basic .NET
C#
20 Acceso a datos con Microsoft ADO.NET
El siguiente cdigo recorre en bucle cada fila del objeto DataTable
denominado Authors y crea una cadena utilizando los campos segundo y
au_lname de Authors:
Dim r As DataRow
Dim str As String
For Each r in ds.Tables("Authors").Rows
str &= r(1)
str &= r("au_lname")
Next
string str = "";
foreach(DataRow r in ds.Tables["Authors"].Rows)
{
str += r[1];
str += r["au_lname"];
}
Visual Basic .NET
C#
Acceso a datos con Microsoft ADO.NET 21
Demostracin: utilizar programticamente un DataSet
Crear una conexin
Crear DataAdapter
Crear DataSet
Leer los datosdel DataSet
programticamente
*****************************
En esta demostracin, examinaremos cdigo que crea y rellena un objeto
DataSet, y veremos cmo ese cdigo rellena dinmicamente un control
ListBox desde el objeto DataSet.
Ejecutar la demostracin
1. Abrir la pgina UseDataSet.aspx del proyecto Demo08VB o Demo08CS
que se pueden encontrar dentro del fichero demos08.zip.
2. Generar y examinar la pgina.
La primera vez que se carga la pgina, el cuadro de lista lstItems se rellena
dinmicamente con los nombres de las columnas del DataSet.
El botn Get Number of Rows y el botn Get Values leen la informacin
del DataSet.
3. Hacer clic en Get Number of Rows.
El cdigo en el procedimiento de evento click muestra la propiedad Count
de la coleccin Rows.
4. Seleccionar una columna en el cuadro de lista y hacer clic en Get Values.
El cdigo en el procedimiento de evento click recorre en bucle las filas del
DataSet y muestra el campo seleccionado.
5. En Visual Studio .NET, visualizar la pgina de cdigo subyacente de la
pgina UseDataSet.aspx.
Introduccin
22 Acceso a datos con Microsoft ADO.NET
6. En el procedimiento de evento Page_Load, mostrar el cdigo que crea los
siguientes objetos:
SqlConnection
SqlDataAdapter
DataSet
7. En el procedimiento de evento Page_Load, mostrar cmo la primera vez
que se muestra la pgina, el cuadro lista se rellena nicamente con los
nombres de columnas.
8. En el procedimiento de evento cmdRows_Click, mostrar cmo se recupera
el nmero de filas desde el DataSet.
9. En el procedimiento de evento cmdGetValues_Click, mostrar cmo se
recupera el campo seleccionado desde el DataSet.
Acceso a datos con Microsoft ADO.NET 23
Utilizar un DataView
Un DataViewpuede personalizarse para presentar un
subconjunto de datos de un DataTable
La propiedad DefaultViewdevuelve el DataView
predeterminado de la tabla
Establecer una vista distinta de un DataSet
DataView dv = new DataView(ds.Tables["Authors"]);
dv.RowFilter = "state = 'CA'";
DataView dv = new DataView(ds.Tables["Authors"]);
dv.RowFilter = "state = 'CA'";
Dim dv As DataView = ds.Tables("Authors").DefaultView
Dim dv As DataView = ds.Tables("Authors").DefaultView
Dim dv As New DataView (ds.Tables("Authors"))
dv.RowFilter = "state = 'CA'"
Dim dv As New DataView (ds.Tables("Authors"))
dv.RowFilter = "state = 'CA'"
DataView dv = ds.Tables["Authors"].DefaultView;
DataView dv = ds.Tables["Authors"].DefaultView;
*****************************
Para mostrar los datos que almacena un objeto DataSet, podemos vincular el
objeto DataSet directamente a un control enlazado a una lista o utilizar un
objeto DataView. Un objeto DataView es una vista personalizada y enlazable
de un nico objeto DataTable. Despus de crear un objeto DataView, el
usuario puede utilizarlo para clasificar, filtrar, buscar, editar y navegar por
datos.
Los objetos DataView pueden personalizarse para presentar un subconjunto de
datos de un objeto DataTable. Esta personalizacin permite tener dos controles
vinculados al mismo objeto DataTable, pero con cada control mostrando
distintas versiones de los datos. Por ejemplo, un control puede estar vinculado a
un objeto DataView mostrando todas las filas de la tabla, y un segundo control
puede estar vinculado a otro objeto DataView configurado para mostrar
nicamente las filas que se han eliminado del objeto DataTable.
Cada objeto DataTable de un objeto DataSet tiene una propiedad
DefaultView, que devuelve la vista predeterminada de la tabla. El siguiente
cdigo muestra cmo podemos acceder al objeto DataView dv predeterminado,
de un objeto DataTable denominado Authors:
Dim dv As DataView = ds.Tables("Authors").DefaultView
DataView dv = ds.Tables["Authors"].DefaultView;
Introduccin
DataViews como
subconjunto de un
DataTable
DefaultView
Visual Basic .NET
C#
24 Acceso a datos con Microsoft ADO.NET
Tambin podemos crear un objeto DataView personalizado basado en un
subconjunto de datos que se encuentran en un objeto DataTable. Por ejemplo,
podemos establecer la propiedad DataView RowFilter utilizando una
expresin de filtro. La expresin de filtro puede tener el valor True o False.
Tambin podemos establecer la propiedad Sort del objeto DataView utilizando
una expresin de clasificacin. La expresin de clasificacin puede incluir los
nombres de objetos DataColumn o un clculo.
En el siguiente cdigo, la propiedad RowFilter, de un objeto DataView dv,
est asignada para recuperar autores nicamente del estado de California y, a
continuacin, ordenar los resultados por apellido:
Dim dv As New DataView(ds.Tables("Authors"))
dv.RowFilter = "state = 'CA'"
dv.Sort = "au_lname"
DataView dv = new DataView(ds.Tables["Authors"]);
dv.RowFilter = "state = CA";
dv.Sort = "au_lname";
DataViewpersonalizado
Visual Basic .NET
C#
Acceso a datos con Microsoft ADO.NET 25
Prctica: organizar cdigo para crear un DataSet
Los estudiantes:
Reordenarn lneas de cdigo para crear
un DataSet
Tiempo: 5 minutos
*****************************
En esta prctica, reordenaremos lneas de cdigo ADO.NET en el orden
correcto para crear un objeto DataSet.
Ejecutar la prctica
Visualizar la pgina http://localhost/Mod10VB/DataSetCode.aspx o
http://localhost/Mod10CS/DataSetCode.aspx y organizar las lneas de
cdigo ADO.NET en el orden correcto para crear un objeto DataSet.
Hay varias respuestas correctas para esta prctica.
Nota
26 Acceso a datos con Microsoft ADO.NET
Vincular un DataSet a un control enlazado a lista
Crear el control
Vincular a un DataSeto un DataView
dg.DataSource = ds
dg.DataMember = "Authors"
dg.DataBind()
dg.DataSource = ds
dg.DataMember = "Authors"
dg.DataBind()
<asp:DataGrid id="dg" runat="server" />
<asp:DataGrid id="dg" runat="server" />
dg.DataSource = ds;
dg.DataMember = "Authors";
dg.DataBind();
dg.DataSource = ds;
dg.DataMember = "Authors";
dg.DataBind();
*****************************
ASP.NET incluye un conjunto de controles enlazados a listas, como los
controles DataGrid, DataList y DataRepeater, que facilitan y flexibilizan la
visualizacin de datos desde una fuente de datos. Los desarrolladores
nicamente deben vincular estos controles a una fuente de datos para mostrar
los datos seleccionados.
El primer paso para vincular el objeto DataSet al control enlazado a lista es
crear el control. El siguiente cdigo muestra cmo crear un control DataGrid
dg que produce la salida HTML parecida a una hoja de clculo:
<asp:DataGrid id="dg" runat="server" />
Para vincular un objeto DataSet a un control DataGrid, en primer lugar
debemos establecer la propiedad DataSource del control DataGrid a un objeto
DataSet, DataTable o DataView, e invocar el mtodo DataBind.
Si establecemos la propiedad DataSource del control DataGrid directamente a
un objeto DataSet, el objeto DataTable con el ndice 0 se utiliza de forma
predeterminada. Para especificar otro objeto DataTable, establecer la
propiedad DataMember del control DataGrid con el nombre del objeto
DataTable deseado.
El siguiente cdigo de ejemplo muestra cmo vincular la tablaAuthors, del
objeto DataSet ds, a un control DataGrid denominado dg:
dg.DataSource = ds
dg.DataMember = "Authors"
dg.DataBind()
dg.DataSource = ds;
dg.DataMember = "Authors";
dg.DataBind();
Introduccin
Crear el control
Vincular a un Dataset o
DataView
Visual Basic .NET
C#
Acceso a datos con Microsoft ADO.NET 27
El siguiente cdigo muestra cmo podemos utilizar tambin la coleccin
Tables del objeto DataSet ds para asignar el objeto DataTable Authors
directamente a la propiedad DataSource del control DataGrid denominado dg:
dg.DataSource = ds.Tables("Authors")
dg.DataBind()
dg.DataSource = ds.Tables["Authors"];
dg.DataBind();
Si deseamos mostrar una vista distinta de los datos del control DataGrid,
deberemos crear un nuevo objeto DataView desde el objeto DataSet y vincular
ese objeto al control.
El siguiente cdigo de ejemplo muestra cmo vincular un objeto DataView dv,
filtrado para el estado de California, a un control DataGrid dg:
Dim dv As New DataView(ds.Tables("Authors"))
dv.RowFilter = "state = 'CA'"
dg.DataSource = dv
dg.DataBind()
DataView dv = new DataView(ds.Tables["Authors"]);
dv.RowFilter = "state = 'CA'";
dg.DataSource = dv;
dg.Databind();
La siguiente ilustracin muestra el formato predeterminado del control
DataGrid, mostrando datos de autores que viven en el estado de California.
Visual Basic .NET
C#
Ejemplo de uso de una
vista personalizada
Visual Basic .NET
C#
28 Acceso a datos con Microsoft ADO.NET
Prctica dirigida por el instructor: mostrar un DataSet
Crear una conexin
Crear un DataAdapter
Crear un DataSet
Crear un DataView
VincularDataSety DataViewa controles
DataGrid
*****************************
En esta prctica dirigida por el instructor, examinaremos cdigo que crea y
rellena un objeto DataSet, crea un objeto DataView utilizando datos
clasificados y filtrados del objeto DataSet, y vincula los controles DataGrid a
los objetos DataSet y DataView.
Ejecutar la prctica dirigida por el instructor
1. Abrir la pgina UseGrid.aspx del proyecto Mod10VB o Mod10CS de la
solucin 2310Demos.
2. Generar y examinar la pgina UseGrid.aspx.
Hay dos controles DataGrid vinculados al mismo objeto DataSet. El
primer control DataGrid muestra todos los datos del objeto DataSet. El
segundo control DataGrid est vinculado a un objeto DataView, que filtra
y clasifica los datos. El segundo control DataGrid tambin implementa la
clasificacin estableciendo la propiedad Sort del objeto DataView.
3. En Visual Studio .NET, visualizar el cdigo subyacente de la pgina
UseGrid.aspx.
4. En el procedimiento de evento Page_Load, mostrar el cdigo que hace lo
siguiente:
Crea el objeto SqlConnection.
Crea el objeto SqlDataAdapter.
Crea un objeto DataSet.
Vincula el primer control DataGrid con el objeto DataSet.
Crea un objeto DataView y establece las propiedades RowFilter y Sort.
Vincula el segundo control DataGrid con el objeto DataView.
Introduccin
Acceso a datos con Microsoft ADO.NET 29
Gestin de errores
La conexin no se abre
La cadena de conexin no es vlida
El servidor o la base de datos no se encuentran
Fallo de inicio de sesin
El DataAdapterno puede crear un DataSet
Sintaxis SQL no vlida
Nombre de tabla o campo no vlido
Cdigo de ejemplo
*****************************
Existen dos fuentes principales de error cuando intentamos acceder a datos
desde un formulario Web Form utilizando ADO.NET: problemas de conexin y
una falta de alineacin con la base de datos.
Cuando se invoca el mtodo Open, puede producirse ms de un error. Ante la
posibilidad de que ocurra ms de un error, debemos ser capaces de gestionar
mltiples errores utilizando las instrucciones TryCatchFinally. Si se
produce una o ms excepciones SqlException, podemos recorrer todos los
objetos de excepciones SQL devueltos a nuestra aplicacin Web.
El siguiente cdigo muestra cmo utilizar una instruccin Try...Catch para
capturar mltiples tipos de excepciones. En este ejemplo, el cdigo captura el
tipo de excepcin InvalidOperationException, junto con otras excepciones,
utilizando un procesador de excepciones genrico:
Introduccin
La conexin no se abre
30 Acceso a datos con Microsoft ADO.NET
Try
Dim conn As New SqlConnection(...)
Dim da As New SqlDataAdapter(..., conn)
Dim ds As New DataSet()
da.Fill(ds)
Catch ex1 As System.Data.SqlClient.SqlException
Select Case ex1.Number
Case 17
lblErrors.Text = lblErrors.Text & _
("invalid Server name")
Case 156, 170 'bad SQL syntax
lblErrors.Text = lblErrors.Text & _
("incorrect syntax")
Case 207 'bad field name in select
lblErrors.Text = lblErrors.Text & _
("invalid column name")
Case 208 'bad table name in select
lblErrors.Text = lblErrors.Text & _
("invalid object name")
Case 18452
lblErrors.Text = lblErrors.Text & _
("invalid user name")
Case 18456
lblErrors.Text = lblErrors.Text & _
("invalid password")
Case 4060
lblErrors.Text = lblErrors.Text & _
("invalid database")
End Select
Catch ex2 As System.Exception
lblErrors.Text = lblErrors.Text & _
("Unexpected exception: " & ex2.Message & ". ")
End Try
Visual Basic .NET
Acceso a datos con Microsoft ADO.NET 31
try
{
SqlConnection conn = new SqlConnection("...");
SqlDataAdapter da = new SqlDataAdapter("...",conn);
DataSet ds = new DataSet();
da.Fill(ds);
}
catch (System.Data.SqlClient.SqlException ex1)
{
switch(ex1.Number)
{
case 17:
lblErrors.Text = lblErrors.Text +
("invalid Server name");
break;
case 156:
case 170: //bad SQL syntax
lblErrors.Text = lblErrors.Text +
("incorrect syntax");
break;
case 207: //bad field name in select
lblErrors.Text = lblErrors.Text +
("invalid column name");
break;
case 208: //bad table name in select
lblErrors.Text = lblErrors.Text +
("invalid object name");
break;
case 18452:
lblErrors.Text = lblErrors.Text +
("invalid user name");
break;
case 18456:
lblErrors.Text = lblErrors.Text +
("invalid password");
break;
case 4060:
lblErrors.Text = lblErrors.Text +
("invalid database");
break;
}
}
catch (System.Exception ex2)
{
lblErrors.Text = lblErrors.Text +
("Unexpected exception: " + ex2.Message + ". ");
}
C#
32 Acceso a datos con Microsoft ADO.NET
La clase SqlException contiene la excepcin que se lanza cuando SQL Server
devuelve un aviso o error. Esta clase se crea siempre que el Proveedor de Datos
.NET de SQL Server encuentra una situacin que no puede gestionar. La clase
SqlException siempre contiene al menos la instancia de un objeto SqlError.
Podemos utilizar el nivel de severidad de la clase para que nos ayude a
determinar el contenido de un mensaje mostrado por una excepcin.
Para capturar objetos SqlException, debemos buscar errores de tipo
System.Data.SqlClient.SqlException. Cuando se produce un objeto
SqlException, el objeto de excepcin contiene una coleccin Errors.
El siguiente ejemplo muestra cmo podemos recorrer la coleccin Errors para
encontrar informacin sobre los errores que se han producido:
Dim erData As SqlClient.SqlErrorCollection = ex1.Errors
Dim i As Integer
For i = 0 To erData.Count - 1
lblErrors.Text &= ("Error " & i & ": " & _
erData(i).Number & ", " & _
erData(i).Class & ", " & _
erData(i).Message & "<br>")
Next i
SqlErrorCollection erData = ex1.Errors;
for(int i = 0; i < erData.Count; i++)
{
lblErrors.Text += "Error" + i + ": " +
erData[i].Number + ", " +
erData[i].Class + ", " +
erData[i].Message + "<br>";
}
Los errores de SQL Server comparten propiedades comunes y estn
identificados por un nmero y un nivel de gravedad:
La clase SqlError y propiedades comunes
Cada objeto SqlError tiene las propiedades comunes que se muestran en la
siguiente tabla.
Propiedad Descripcin
Class Obtiene el nivel de gravedad del error devuelto por SQL Server.
LineNumber Obtiene el nmero de lnea del archivo de proceso por lotes con
comandos Transact-SQL o el procedimiento almacenado que
contiene el error.
Message Obtiene el texto que describe el error.
Number Obtiene un nmero que identifica el tipo de error.
Para una lista completa de las propiedades de la clase SqlError,
consultar la documentacin de Visual Studio .NET.
El DataAdapter no
puede crear un DataSet
Visual Basic .NET
C#
Errores de SQL Server
Nota
Acceso a datos con Microsoft ADO.NET 33
Nmeros de error de SQL Server
La propiedad Number permite determinar el error especfico que se ha
producido. Por ejemplo, la siguiente tabla ofrece una lista de algunos
nmeros de errores SQL Server ms habituales y sus descripciones.
Nmero Descripcin
17 Nombre de servidor no vlido
4060 Nombre de base de datos no vlido
18456 Nombre de usuario o contrasea no vlidos
Niveles de gravedad de SQL Server
La siguiente tabla describe niveles de severidad de errores de SQL Server, a
los que se accede a travs de la propiedad Class de la clase SqlError.
Gravedad Descripcin Accin
11-16 Generado por usuario Puede ser corregido por el usuario.
17-19 Errores de software o
hardware
Podemos seguir trabajando, pero es posible
que no podamos ejecutar una instruccin
determinada. SqlConnection permanece
abierto.
20-25 Errores de software o
hardware
El servidor cierra SqlConnection. El
usuario puede volver a abrir la conexin.
34 Acceso a datos con Microsoft ADO.NET
Leccin: utilizar mltiples tablas
Almacenar mltiples tablas
Crear relaciones
Navegar programticamente entre tablas utilizando
relaciones
Navegar visualmente entre tablas utilizando
relaciones
Prctica dirigida por el instructor: mostrar datos de
mltiples tablas
*****************************
Uno de los puntos fuertes de los objetos DataSet es que pueden contener
mltiples objetos DataTable, y cada objeto DataTable puede provenir de una
fuente distinta.
En esta leccin, estudiaremos cmo almacenar mltiples tablas de datos en un
objeto DataSet y cmo mostrar esos datos en controles DataGrid.
En esta leccin, aprenderemos a:
Almacenar datos en mltiples tablas de mltiples fuentes.
Crear relaciones entre datos de mltiples fuentes de datos.
Utilizar relaciones para navegar entre tablas de datos de mltiples fuentes.
Introduccin
Objetivos de la leccin
Acceso a datos con Microsoft ADO.NET 35
Almacenar mltiples tablas
Agregar la primera tabla
Agregar la(s) siguiente(s) tabla(s)
daCustomers = New SqlDataAdapter _
("select * from Customers", conn1)
daCustomers.Fill(ds, "Customers")
daCustomers = New SqlDataAdapter _
("select * from Customers", conn1)
daCustomers.Fill(ds, "Customers")
Orders
Customers
daOrders = New SqlDataAdapter _
("select * from Orders", conn2)
daOrders.Fill(ds, "Orders")
daOrders = New SqlDataAdapter _
("select * from Orders", conn2)
daOrders.Fill(ds, "Orders")
conn2 conn1
DataSet
*****************************
Para rellenar un objeto DataSet con mltiples objetos DataTable que
provienen de una o ms fuentes de datos, debemos utilizar mltiples objetos
DataAdapter. Cada objeto DataAdapter rellena una tabla distinta del objeto
DataSet. Como el orden de los objetos DataAdapter controla el orden de
implementacin, podemos controlar el orden en que se escriben las
actualizaciones a y desde la base de datos. Este control sobre el orden de
implementacin nos ayuda a conservar la integridad referencial entre las tablas
relacionadas de la base de datos.
Un ejemplo de control del orden en que se crean los objetos DataTable podra
ser un responsable de ventas que necesita recuperar informacin de clientes, e
informacin sobre rdenes de compra realizadas por cada cliente, desde una
base de datos central. Para satisfacer este requerimiento, podemos crear una
aplicacin Web que contenga dos objetos DataAdapter, el primero para
recuperar registros de clientes y el segundo para recuperar registros de rdenes
de compra. Cargando primero los datos de los clientes, podemos conservar la
integridad referencial entre los clientes y sus rdenes de compra.
Introduccin
Agregar la primera tabla
36 Acceso a datos con Microsoft ADO.NET
El siguiente cdigo puebla un objeto Customers DataTable utilizando un
objeto DataAdapter denominado daCustomers:
Dim conn As SqlConnection
Dim daCustomers As SqlDataAdapter
Dim daOrders As SqlDataAdapter
Dim ds As New DataSet()
'create a connection to the Pubs database
conn = New SqlConnection("data source=localhost;" & _
"integrated security=true;initial catalog=northwind")
'create the first DataTable
daCustomers = New SqlDataAdapter _
("select CustomerID, CompanyName from Customers", conn)
daCustomers.Fill(ds, "Customers")
SqlConnection conn;
SqlDataAdapter daCustomers;
SqlDataAdapter daOrders;
DataSet ds = new DataSet();
// Create a connection to the Pubs database
conn = new SqlConnection("data source=localhost; " +
"integrated security=true;initial catalog=northwind");
// Create the first DataTable
daCustomers = new SqlDataAdapter
("select CustomerID, CompanyName from Customers", conn);
daCustomers.Fill(ds, "Customers");
Despus de cargar el primer objeto DataTable, podemos rellenar objetos
DataTable adicionales y definir las relaciones entre los objetos basadas en el
objeto DataTable inicial. Siguiendo con el ejemplo anterior, rellenaramos el
objeto Orders DataTable.
El siguiente cdigo puebla el objeto Orders DataTable utilizando un objeto
DataAdapter denominado daOrders:
'Create the second DataTable
daOrders = New SqlDataAdapter _
("select CustomerID, OrderID, OrderDate, ShippedDate " & _
"from Orders", conn)
daOrders.Fill(ds, "Orders")
// Create the second DataTable
daOrders = new SqlDataAdapter
("select CustomerID, OrderID, OrderDate, ShippedDate " +
"from Orders", conn);
daOrders.Fill(ds, "Orders");
Deberamos utilizar un nuevo objeto DataAdapter para cada objeto
DataTable de un objeto DataSet.
Visual Basic .NET
C#
Agregar tablas
subsiguientes
Visual Basic .NET
C#
Nota
Acceso a datos con Microsoft ADO.NET 37
Crear relaciones
Identificar la columna primaria
Identificar la columna secundaria
Crear DataRelation
Dim dr As New DataRelation _
("name", parentCol, _
childCol)
ds.DataRelations.Add(dr)
Dim dr As New DataRelation _
("name", parentCol, _
childCol)
ds.DataRelations.Add(dr)
Dim parentCol As DataColumn = _
ds.Tables("Customers").Columns("CustomerID")
Dim parentCol As DataColumn = _
ds.Tables("Customers").Columns("CustomerID")
Dim childCol As DataColumn = _
ds.Tables("Orders").Columns("CustomerID")
Dim childCol As DataColumn = _
ds.Tables("Orders").Columns("CustomerID")
TablaOrders
TablaCustomers
DataSet
parentCol
childCol
DataRelation
Cdigo de ejemplo C#
*****************************
Se utiliza un objeto DataRelation para referenciar dos objetos DataTable entre
s a travs de objetos DataColumn. Por ejemplo, en una relacin
Customer/Orders, Customers es la tabla primaria de la relacin y Orders es la
secundaria. Esta relacin es similar a una relacin clave principal/clave fornea.
Las relaciones se crean entre columnas coincidentes de las tablas primaria y
secundaria. El valor de DataType para ambas columnas debe ser idntico.
Los objetos DataRelation estn contenidos en un objeto
DataRelationCollection, al que podemos acceder no slo a travs de la
propiedad Relations del objeto DataSet, sino tambin a travs de las
propiedades ChildRelations y ParentRelations del objeto DataTable.
Para crear un objeto DataRelation, utilizamos el constructor DataRelation y el
mtodo Add de la coleccin Relations de un objeto DataSet.
Introduccin
38 Acceso a datos con Microsoft ADO.NET
El siguiente ejemplo crea un objeto DataRelation dr y lo agrega al objeto
DataSet ds:
'Create DataRelation: each publisher publishes many titles
Dim dr As DataRelation
Dim parentCol As DataColumn
Dim childCol As DataColumn
parentCol = ds.Tables("Customers").Columns("CustomerID")
childCol = ds.Tables("Orders").Columns("CustomerID")
dr = New DataRelation("CustOrders", parentCol, childCol)
ds.Relations.Add(dr)
// Create DataRelation: each publisher publishes many titles
DataRelation dr;
DataColumn parentCol;
DataColumn childCol;
parentCol = ds.Tables["Customers"].Columns["CustomerID"];
childCol = ds.Tables["Orders"].Columns["CustomerID"];
dr = new DataRelation("CustOrders", parentCol, childCol);
ds.Relations.Add(dr);
Para ms informacin sobre relaciones de datos, ver Explorar una
relacin entre tablas, en la documentacin de Visual Studio .NET.
Ejemplo de objeto
DataRelation
Visual Basic .NET
C#
Nota
Acceso a datos con Microsoft ADO.NET 39
Navegar programticamente entre tablas utilizando relaciones
ds.Tables(index).Rows(index).GetChildRows("relation")
ds.Tables(index).Rows(index).GetParentRow("relation")
ds.Tables(index).Rows(index).GetChildRows("relation")
ds.Tables(index).Rows(index).GetParentRow("relation")
Customers Orders
GetChildRows
GetParentRow
DataSet
ds.Tables[index].Rows[index].GetChildRows("relation");
ds.Tables[index].Rows[index].GetParentRow("relation");
ds.Tables[index].Rows[index].GetChildRows("relation");
ds.Tables[index].Rows[index].GetParentRow("relation");
*****************************
En muchos ejemplos de aplicaciones Web, necesitaremos trabajar con datos de
ms de una tabla, y a menudo querremos trabajar con datos de tablas
relacionadas. La relacin entre una tabla primaria y una tabla secundaria se
denomina relacin principal-detalle. Un ejemplo de esta relacin sera
recuperar el registro de un cliente y visualizar tambin informacin de los
pedidos relacionados con ese cliente.
El modelo de objetos DataSet desconectado nos permite trabajar con mltiples
objetos DataTables en nuestra aplicacin Web y definir una relacin entre esos
objetos DataTable. Podemos utilizar la relacin para navegar por registros
relacionados de las tablas.
Una de las principales funciones de una clase DataRelation es permitir la
navegacin desde un objeto DataTable a otro objeto DataTable en un objeto
DataSet. Esta capacidad de navegacin nos permite recuperar todos los objetos
DataRow relacionados en un objeto DataTable cuando tenemos un nico
objeto DataRow de un objeto DataTable relacionado. Por ejemplo, tras
establecer un objeto DataRelation entre un objeto DataTable de clientes y un
objeto DataTable de rdenes de compra, podemos recuperar todas las filas de
los pedidos de un determinado cliente utilizando el mtodo
DataRow.GetChildRows.
El mtodo GetChildRows de un objeto DataRow recupera las filas
relacionadas de un objeto DataTable secundario. El mtodo GetParentRow de
un objeto DataRow recupera la fila primaria de un objeto DataTable primario.
Introduccin
Navegar
programticamente
40 Acceso a datos con Microsoft ADO.NET
Por ejemplo, podemos tener un control DataGrid denominado dgCustomers
que muestre datos del objeto DataTable Customers, que es un objeto DataSet
ds. El siguiente cdigo muestra un bucle que recorre todos los registros
childOrder para obtener una lista de nmeros de pedido:
currentParentRow = ds.Tables("Customers"). _
Rows(dgCustomers.SelectedIndex)
For Each r In currentParentRow.GetChildRows("CustOrders")
Label1.Text &= r("OrderID") & ", "
Next
currentParentRow = ds.Tables["Customers"].
Rows[dgCustomers.SelectedIndex];
foreach(DataRow r
in currentParentRow.GetChildRows("CustOrders"))
{
Label1.Text += r["OrderID"] + ",";
}
Visual Basic .NET
C#
Acceso a datos con Microsoft ADO.NET 41
Navegar visualmente entre tablas utilizando relaciones
Dim tableView As DataView
Dim currentRowView As DataRowView
tableView = New DataView(ds.Tables("Customers"))
currentRowView = tableView(dgCustomers.SelectedIndex)
dgChild.DataSource = currentRowView.CreateChildView("CustOrders")
Dim tableView As DataView
Dim currentRowView As DataRowView
tableView = New DataView(ds.Tables("Customers"))
currentRowView = tableView(dgCustomers.SelectedIndex)
dgChild.DataSource = currentRowView.CreateChildView("CustOrders")
Customers Orders
CreateChildView
DataRowView
DataView
DataSet
DataView tableView;
DataRowView currentRowView;
tableView = new DataView(ds.Tables["Customers"]);
currentRowView = tableView[dgCustomers.SelectedIndex];
dgChild.DataSource = currentRowView.CreateChildView("CustOrders");
DataView tableView;
DataRowView currentRowView;
tableView = new DataView(ds.Tables["Customers"]);
currentRowView = tableView[dgCustomers.SelectedIndex];
dgChild.DataSource = currentRowView.CreateChildView("CustOrders");
*****************************
Con Visual Studio .NET tambin podemos mostrar relaciones arrastrando
controles desde el cuadro de herramientas. Si deseamos mostrar las filas
secundarias de una relacin en otro control enlazado a lista, podemos utilizar el
mtodo CreateChildView y vincular el control enlazado a lista al objeto
DataView resultante.
Para conectar dos controles enlazados a lista a travs de un objeto
DataRelation, necesitamos obtener el objeto DataRowView de la fila
seleccionada del control enlazado a lista primario, e invocar el mtodo
CreateChildView del objeto DataRowView.
El siguiente cdigo crea un objeto DataView desde un objeto DataRelation
para mostrar registros secundarios en un control DataGrid:
Dim parentTableView As New _
DataView(ds.Tables("Customers"))
Dim currentRowView As DataRowView = _
parentTableView(dgCustomers.SelectedIndex)
dgChild.DataSource = _
currentRowView.CreateChildView("CustOrders")
dgChild.DataBind()
DataView parentTableView = new
DataView(ds.Tables["Customers"]);
DataRowView currentRowView =
parentTableView[dgCustomers.SelectedIndex];
dgChild.DataSource =
currentRowView.CreateChildView("CustOrders");
dgChild.DataBind();
Navegar visualmente
Visual Basic .NET
C#
42 Acceso a datos con Microsoft ADO.NET
Prctica dirigida por el instructor: mostrar datos de mltiples tablas
Programticamente:
Crear un DataSet
Crear un DataRelation
Mostrar registros secundarios utilizando
DataRelation
Visualmente:
Invocar CreateChildView
*****************************
Ejecutar la prctica dirigida por el instructor
1. Abrir la pgina UseRelations.aspx del proyecto Mod10VB o Mod10CS de
la solucin 2310Demos.
2. Generar y examinar la pgina UseRelations.aspx.
La pgina tiene dos controles DataGrid. Cuando seleccionamos un cliente
en el primer control DataGrid, el procedimiento de evento lee las filas
relacionadas del objeto DataTable Orders, basndose en la relacin y los
nmeros de pedido que se muestran, y genera un DataView para el control
DataGrid secundario.
3. En Visual Studio .NET, visualizar la pgina de cdigo subyacente de la
pgina UseRelations.aspx.
4. El procedimiento de evento Page_Load invoca tres sub-procedimientos:
CreateDataSet, MakeDataRelation y BindToDataGrid:
CreateDataSet. Este sub-procedimiento crea el objeto Connection, el
objeto DataAdapter y el objeto DataSet.
MakeDataRelation. Este sub-procedimiento crea el objeto
DataRelation entre las dos tablas. La relacin es Publishers a Titles.
BindToDataGrid. Este sub-procedimiento vincula el control DataGrid
a la tabla primaria, Customers.
5. El procedimiento de evento dgParent_SelectedIndexChanged muestra
filas secundarias de dos modos: programticamente y visualmente:
Programticamente. El procedimiento invoca el mtodo GetChildRows
de la fila actual recorre los registros devueltos para mostrar el campo
OrderID de cada fila.
Visualmente. El procedimiento invoca el mtodo CreateChildView de
la vista de la fila actual y la vincula a un segundo control DataGrid.
Acceso a datos con Microsoft ADO.NET 43
Mostrar el Asistente para formularios de datos
1. Hacer clic con el botn derecho en el proyecto Mod10, clic en Agregar y
clic en Agregar nuevo elemento.
2. En el cuadro de dilogo Agregar nuevo elemento, hacer clic en el
Asistente para formularios de datos en la lista Plantillas, escribir
CustOrders.aspx en el campo Nombre y hacer clic en Abrir.
3. Seguir los pasos del asistente como muestra la siguiente tabla.
En esta pgina Hacer lo siguiente
Bienvenido Hacer clic en Siguiente.
Escoger el DataSet que deseamos
utilizar
Hacer clic en Crear un nuevo DataSet
denominado, escribir dsCustOrders en
el campo y hacer clic en Siguiente.
Escoger una conexin de datos Seleccionar una conexin existente a la
base de datos Northwind o crear una
nueva, y hacer clic en Siguiente.
Escoger tablas o vistas Agregar las tablas Customers y Orders a
la lista Elemento(s) seleccionado(s) y
hacer clic en Siguiente.
Crear una relacin entre tablas Introducir CustOrders en el campo
Nombre, seleccionar Customers como
Tabla primaria, seleccionar Orders
como Tabla secundaria, seleccionar
CustomerID como Clave para ambas
tablas (primaria y secundaria), hacer clic
en el botn > y clic en Siguiente.
Escoger las tablas y columnas a mostrar Mantener los valores predeterminados
para mostrar todas las columnas en las
tablas Principal y Detalle, y hacer clic
en Finalizar.
El Asistente para formularios de datos crea un formulario Web Form con
un control DataGrid y un botn Load.
4. Hacer clic con el botn derecho en la pgina CustOrders.aspx del
Explorador de soluciones y hacer clic en Ver en el navegador.
5. En el navegador, hacer clic en Cargar.
El control DataGrid se carga con datos de la tabla Customers y se muestran
los datos.
6. Hacer clic en Mostrar detalles para uno de los clientes y desplazarse hasta
la parte inferior de la pgina.
La informacin detallada del cliente seleccionado se muestra en otra tabla.
44 Acceso a datos con Microsoft ADO.NET
Leccin: acceder a datos con DataReaders
Ques un DataReader?
Crear un DataReader
Leer datos de un DataReader
Vincular un DataReadera un control enlazado a lista
Prctica: organizar cdigo para crear un DataReader
Demostracin: mostrar datos utilizando DataReaders
*****************************
La ventaja de utilizar un objeto DataSet es que proporciona una copia
desconectada de la base de datos. Para aplicaciones Web de larga ejecucin, el
uso de un objeto DataSet es a menudo la mejor opcin. Sin embargo, los
desarrolladores frecuentemente realizan operaciones cortas y sencillas, como
mostrar un nico conjunto de datos directamente al usuario o acceder a una
nica contrasea, con cada peticin de datos. Para ese tipo de operaciones, los
desarrolladores no necesitan mantener un objeto DataSet; pueden utilizar un
objeto DataReader.
En esta seccin, aprenderemos a leer datos de una fuente de datos utilizando la
clase DataReader.
En esta leccin, aprenderemos a:
Explicar cmo funciona la clase DataReader.
Crear un objeto DataReader.
Leer datos de un objeto DataReader.
Vincular un control de servidor enlazado a lista a un objeto DataReader.
Introduccin
Objetivos de la leccin
Acceso a datos con Microsoft ADO.NET 45
Qu es un DataReader?
Slo hacia delante, slo lectura
Acceso rpido a datos
Conexin a una fuente de datos
Gestin de la conexin por s mismo
Gestin de los datos por s mismo, o vincularlos a un
control enlazado a lista
Utiliza menos recursos delservidor
*****************************
Cuando se recupera una gran cantidad de datos de una fuente de datos,
mantener la memoria abierta puede ser un problema. Por ejemplo, leer 10.000
filas de una base de datos hace que un objeto DataTable asigne y mantenga
memoria para esas 10.000 filas durante la vida de la tabla. Si 1.000 usuarios
hacen esto contra el mismo equipo a la vez, el uso de la memoria ser un factor
crtico. Para abordar estas situaciones del uso de memoria, la clase DataReader
est diseada para producir un flujo de datos de slo lectura y slo hacia delante
que la base de datos devuelve. Por tanto, slo hay un registro en memoria cada
vez en el servidor.
La clase DataReader proporciona una transferencia de datos de slo lectura y
slo hacia delante que puede vincularse a un control enlazado a lista. Por
ejemplo, si slo deseamos mostrar los resultados de una consulta a una base de
datos en un nico control enlazado a lista, y si no vamos a manipular esos
datos, una clase DataReader es una forma ideal de conseguirlo.
Los objetos DataReader son ms rpidos que los objetos DataSet por la
naturaleza ligera de la clase DataReader. En la creacin del objeto DataSet, la
sobrecarga es mayor debido a que los objetos DataSet tienen la capacidad de
leer y escribir datos y examinar hacia delante y hacia atrs. Hay muy poca
sobrecarga en un objeto DataReader ya que es slo hacia delante y slo de
lectura. Esta relativa falta de sobrecarga supone un acceso a datos ms rpido
con un objeto DataReader que con un objeto DataSet.
ADO.NET incluye dos tipos de objetos DataReader: el objeto SqlDataReader
para datos SQL Server versin 7.0 o posterior, y el objeto OleDbDataReader
para datos OLE DB Data Provider. Utilizamos los objetos OleDbCommand y
SqlCommand, y el mtodo ExecuteReader, para transferir datos a un objeto
DataReader.
Introduccin
Slo hacia delante, slo
lectura
Acceso rpido a datos
Conexin a la fuente de
datos
46 Acceso a datos con Microsoft ADO.NET
A diferencia de un objeto DataAdapter que se abre y cierra automticamente,
debemos gestionar la conexin del objeto DataReader por nosotros mismos.
La clase DataReader se parece a la clase DataAdapter en que creamos un
objeto Command desde una instruccin y una conexin SQL. Sin embargo,
con el objeto DataReader Command, debemos abrir y cerrar explcitamente el
objeto Connection.
Tenemos la opcin de recorrer los datos del objeto DataReader y mostrarlo
programticamente, o podemos vincular un objeto DataReader a un control
enlazado a lista. En ambos casos, debemos escribir el cdigo nosotros mismos.
Debido a que el DataReader no es una representacin en memoria de los datos,
utilizar un DataReader afecta poco a la disponibilidad de los recursos del
servidor.
Gestin de la conexin
por s mismo
Gestin de los datos
uno mismo
Utiliza menos recursos
del servidor
Acceso a datos con Microsoft ADO.NET 47
Crear un DataReader
Cdigode ejemplo
Para utilizar un DataReader:
1. Crear y abrir la conexin a la base de datos
2. Crear un objeto Command
3. Crear un DataReaderdesde el objeto Command
4. Invocar el mtodo ExecuteReader
5. Utilizar el objeto DataReader
6. Cerrar el objeto DataReader
7. Cerrar el objeto Connection
Utilizar el controlador de errores TryCatchFinally
1
1 1
2
2 2
3
3 3
4
4 4
5
5 5
6
6 6
7
7 7
*****************************
Para utilizar un objeto SqlDataReader, necesitamos crear un objeto
SqlCommand en lugar de un objeto SqlDataAdapter, que es lo que se
necesitaba con los objetos DataSet. El objeto SqlCommand expone un mtodo
ExecuteReader que devuelve un objeto SqlDataReader.
Similar a un objeto DataAdapter, creamos un objeto Command desde una
instruccin SQL y una conexin. Sin embargo, con el objeto DataReader
Command, debemos explcitamente abrir y cerrar el objeto Connection.
Para utilizar un objeto DataReader, debemos codificar manualmente todo el
proceso de conexin. Para utilizar un objeto DataReader se requieren los
siguientes pasos:
1. Crear y abrir la conexin a la base de datos.
2. Crear un objeto Command.
3. Crear el objeto DataReader desde el objeto Command.
4. Invocar el mtodo ExecuteReader.
5. Utilizar el objeto DataReader.
6. Cerrar el objeto DataReader.
7. Cerrar el objeto Connection.
Introduccin
Utilizar un DataReader
48 Acceso a datos con Microsoft ADO.NET
El siguiente cdigo de ejemplo abre una conexin a una base de datos, crea un
objeto DataReader desde un objeto Command, y recorre el objeto
DataReader y agrega campos de los registros a un control ListBox:
'Create connection and command objects
Dim conn As New SqlConnection _
("data source=localhost;integrated security=true;" & _
"initial catalog=pubs")
Dim cmdAuthors As New SqlCommand _
("select * from Authors", conn)
conn.Open()
'create DataReader and display data
Dim dr As SqlDataReader
dr = cmdAuthors.ExecuteReader()
Do While dr.Read()
lstBuiltNames.Items.Add(dr("au_lname") + ", " + _
dr("au_fname"))
Loop
'close DataReader and Connection
dr.Close()
conn.Close()
// Open Connection and create command
SqlConnection conn = new SqlConnection
("data source=localhost; integrated security=true; " +
"initial catalog=pubs;");
SqlCommand cmdAuthors = new SqlCommand
("select * from Authors", conn);
conn.Open();
// Create DataReader and read data
SqlDataReader dr;
dr = cmdAuthors.ExecuteReader();
while (dr.Read())
{
lstBuiltNames.Items.Add(dr["au_lname"] + ", " +
dr["au_fname"]);
}
// Close DataReader and Connection
dr.Close();
conn.Close();
Visual Basic .NET
C#
Acceso a datos con Microsoft ADO.NET 49
Cuando se utilizan conexiones con el objeto DataReader, debemos utilizar
siempre una instruccin TryCatchFinally para garantizar que si algo falla,
la conexin se cerrar. De lo contrario, la conexin puede permanecer abierta
de forma indefinida.
El siguiente cdigo de un objeto DataReader captura errores y cierra la
conexin:
Try
conn.Open()
dr = cmdAuthors.ExecuteReader()
'use the returned data in the DataReaders
Catch e As Exception
'handle the error
Finally
dr.Close()
conn.Close()
End Try
try
{
conn.Open();
dr = cmdAuthors.ExecuteReader();
// use the returned data in the DataReaders
}
catch(Exception e)
{
// Handle error
}
finally
{
dr.Close();
conn.Close();
}
Utilizar el controlador de
eventos
TryCatchFinally
Visual Basic .NET
C#
50 Acceso a datos con Microsoft ADO.NET
Leer datos desde un DataReader
Invocar Readpara cada registro
Devuelve falsecuando no hay ms registros
Acceso a campos
Parmetro es la posicin ordinal o nombre del campo
Las funciones Getofrecen un mejor rendimiento
Cerrar el DataReader
Cerrar la conexin
Do While myReader.Read()
str &= myReader(1)
str &= myReader("field")
str &= myReader.GetDateTime(2)
Loop
Do While myReader.Read()
str &= myReader(1)
str &= myReader("field")
str &= myReader.GetDateTime(2)
Loop
while (myReader.Read())
{
str += myReader[1];
str += myReader["field"];
str += myReader.GetDateTime(2);
}
while (myReader.Read())
{
str += myReader[1];
str += myReader["field"];
str += myReader.GetDateTime(2);
}
*****************************
Tras invocar el mtodo ExecuteReader del objeto Command, podemos
acceder a un registro del objeto DataReader invocando el mtodo Read. El
objeto DataReader se posiciona de modo predeterminado antes del primer
registro; por tanto, debemos invocar el mtodo Read antes de acceder a algn
dato. Cuando ya no hay ms registros disponibles, el mtodo Read devuelve un
valor nulo.
El siguiente cdigo recorre todos los registros de un objeto DataReader dr, y
muestra el campo au_fname en el control Label lblName:
Do While dr.Read()
lblName.Text &= dr("au_fname")
Loop
while (dr.Read())
{
lblName.Text += dr["au_name"];
}
Invocar Read para cada
registro
Visual Basic .NET
C#
Acceso a datos con Microsoft ADO.NET 51
Para obtener los datos de los campos del registro actual, podemos acceder a un
campo por su posicin ordinal, por su nombre o invocando un mtodo Get
adecuado, como GetDateTime, GetDouble, GetInt32 o GetString.
Utilizar un mtodo Get especfico es ms rpido que acceder por
la posicin ordinal o por el nombre, porque el DataReader no necesita
comprobar el formato de los datos.
Por ejemplo, el siguiente cdigo de ejemplo lee los campos del primer y ltimo
nombre, ambos valores de cadena, desde el primer registro del objeto
DataReader dr, utilizando el mtodo GetString():
dr.Read()
lblName.Text = dr.GetString(1) + ", " + _
dr.GetString(2)
dr.Read();
lblName.Text = dr.GetString(1) + ", " +
dr.GetString(2);
Tambin podemos referenciar, por nombre, los campos de datos del registro
actual del objeto DataReader. Seguidamente, podemos invocar una funcin de
conversin apropiada, como muestra el siguiente cdigo de ejemplo:
myReader("au_fname")
myReader["au_fname"];
Mientras el objeto DataReader est en uso, la conexin asociada est ocupada
dando servicio al objeto DataReader. Por tanto, debemos invocar el mtodo
Close para cerrar el objeto DataReader cuando finalicemos su uso, como
muestra el siguiente cdigo de ejemplo:
myReader.Close()
myReader.Close();
DataReader no cierra automticamente la conexin. Debemos invocar
explcitamente el mtodo Close para cerrar la conexin cuando finalicemos su
uso, como muestra el siguiente cdigo de ejemplo:
conn.Close()
conn.Close();
Acceso a campos
Sugerencia
Visual Basic .NET
C#
Visual Basic .NET
C#
Cerrar el DataReader
Visual Basic .NET
C#
Cerrar la conexin
Visual Basic .NET
C#
52 Acceso a datos con Microsoft ADO.NET
Vincular un DataReader a un control enlazado a lista
Crear el control
Vincular a un DataReader
dgAuthors.DataSource = dr
dgAuthors.DataBind()
dgAuthors.DataSource = dr
dgAuthors.DataBind()
<asp:DataGrid id="dgAuthors" runat="server" />
<asp:DataGrid id="dgAuthors" runat="server" />
dgAuthors.DataSource = dr;
dgAuthors.DataBind();
dgAuthors.DataSource = dr;
dgAuthors.DataBind();
*****************************
Adems de recorrer los datos del objeto DataReader y mostrarlos
programticamente, podemos vincular un objeto DataReader a un control
enlazado a lista.
Para vincular un objeto DataReader a un control enlazado a lista, establecemos
la propiedad DataSource del control enlazado a lista al objeto DataReader. El
siguiente cdigo de ejemplo crea un objeto DataReader dr, lo vincula a un
control ListBox au_lname, y cierra los objetos DataReader y Connection:
Dim conn As New SqlConnection _
("data source=localhost;integrated security=true;" & _
"initial catalog=pubs")
conn.Open()
Dim cmdAuthors As New SQLCommand _
("select * from Authors", conn)
'bind the datareader to a listbox
Dim dr As SqlDataReader
dr = cmdAuthors.ExecuteReader()
lstBoundNames.DataSource = dr
lstBoundNames.DataTextField = "au_lname"
lstBoundNames.DataBind()
'close the datareader and the connection
dr.Close()
conn.Close()
Introduccin
Visual Basic .NET
Acceso a datos con Microsoft ADO.NET 53
SqlConnection conn = new SqlConnection
("data source=localhost; integrated security=true; " +
"initial catalog=pubs");
conn.Open();
SqlCommand cmdAuthors = new SqlCommand
("select * from Authors", conn);
//bind the datareader to a listbox
SqlDataReader dr;
dr = cmdAuthors.ExecuteReader();
lstBoundNames.DataSource = dr;
lstBoundNames.DataTextField = "au_lname";
lstBoundNames.DataBind();
//close the datareader and the connection
dr.Close();
conn.Close();
C#
54 Acceso a datos con Microsoft ADO.NET
Prctica: organizar cdigo para crear un DataReader
Los estudiantes:
Reordenarn lneas de cdigo para crear
un DataReader
Tiempo: 5 minutos
*****************************
En esta prctica, reorganizaremos las lneas de cdigo ADO.NET en el orden
correcto para crear un objeto DataReader.
Ejecutar la prctica
Visualizar la pgina http://localhost/Mod10VB/DataReaderCode.aspx o
http://localhost/Mod10CS/DataReaderCode.aspx y colocar las lneas de
cdigo ADO.NET en el orden correcto para crear un objeto DataReader.
Hay varias respuestas correctas para esta prctica.
Nota
Acceso a datos con Microsoft ADO.NET 55
Demostracin: mostrar datos utilizando DataReaders
Crear un objeto SqlConnection
Crear un objeto DataReader
Vincular el DataReadera un Cuadro de
lista
Generar los elementos del Cuadro de
lista a partir de datos proporcionados por
el DataReader
*****************************
En esta demostracin, examinaremos el cdigo que crea y rellena un objeto
DataReader utilizando un objeto SQLCommand que vincula el objeto
DataReader a un control ListBox, y vuelve a crear el DataReader para
vincularlo a un segundo control ListBox.
Ejecutar la demostracin
1. Abrir la pgina DataReader.aspx del proyecto Demo08VB o Demo08CS
que se pueden encontrar dentro del fichero demos08.zip.
2. Generar y examinar la pgina DataReader.aspx.
Hay dos cuadros de lista que muestran los mismos datos. El primer cuadro
de lista est vinculado a un objeto DataReader, mientras que el segundo
cuadro de lista se genera recorriendo los registros del objeto DataReader y
generando programticamente cada entrada del control ListBox.
3. En Visual Studio .NET, visualizar el cdigo subyacente de la pgina
DataReader.aspx.
4. En el procedimiento de evento Page_Load, mostrar el cdigo que hace lo
siguiente:
Crea un objeto SqlConnection.
Crea un objeto SqlCommand.
Crea un objeto DataReader.
Vincula el objeto DataReader al primer control ListBox.
Cerrar el objeto DataReader y crearlo de nuevo.
Este paso es necesario debido a que un objeto DataReader es una vista
de los datos slo hacia delante y ya habamos llegado al final de los
datos cuando el objeto DataReader se vincul al control ListBox.
Recorre el objeto DataReader y agrega dos campos por cada elemento
del segundo control ListBox.
Introduccin
Prctica A: Acceso a datos con Microsoft ADO.NET
Medical
Medical.aspx
Medical
Medical.aspx
Benefits
Home Page
Default.aspx
Benefits
Home Page
Default.aspx
Life Insurance
Life.aspx
Life Insurance
Life.aspx
Retirement
Retirement.aspx
Retirement
Retirement.aspx
Dental
Dental.aspx
Dental
Dental.aspx
Dentists
Doctors
Doctors.aspx
Doctors
Doctors.aspx
Doctors
Logon Page
Login.aspx
Logon Page
Login.aspx
Registration
Register.aspx
Registration
Register.aspx
Coho
Winery
Prospectus
Prospectus.aspx
Prospectus
Prospectus.aspx
XML Web
Service
dentalService1.asmx
XML Web
Service
dentalService1.asmx
Page Header
Header.ascx
Page Header
Header.ascx
ASPState
tempdb
LabWeb
Application
User Control
namedate.ascx
User Control
namedate.ascx
Menu
Component
Class1.vb or Class1.cs
Menu
Component
Class1.vb or Class1.cs
XML
Files
Web.
config
En este laboratorio, aprenderemos a:
Recuperar datos de una base de datos MicrosoftSQL Server
utilizando
los objetos SqlConnection y SqlDataAdapter.
Almacenar datos en un objeto DataSet y mostrar esos datos a los usuarios
en un control DataGrid.
Recuperar datos de una base de datos SQL Server utilizando los objetos
SqlConnection y SqlDataReader.
Vincular un objeto SqlDataReader a un control DataGrid para mostrar
datos.
Este laboratorio se centra en los conceptos de este mdulo. Por ello,
podra no cumplir las recomendaciones de seguridad de Microsoft. Por ejemplo,
este laboratorio no cumple la recomendacin de que todo el acceso a datos se
realice a travs de procedimientos almacenados.
Para trabajar en este laboratorio, es necesario tener:
Conocimientos sobre cmo utilizar los objetos SqlConnection,
SqlDataAdapter, SqlDataReader y DataSet de Microsoft ADO.NET para
leer datos de una base de datos SQL Server.
Conocimientos sobre cmo mostrar datos DataSet en un control DataGrid.
Objetivos
Nota
Requisitos previos
Coho Winery ofrece varios beneficios a sus empleados. En los laboratorios de
este curso, crearemos un sitio Web que permita a los empleados seleccionar y
configurar los beneficios que elijan.
Uno de los beneficios que ofrece Coho Winery es el seguro mdico. Cuando se
solicita un seguro mdico, el usuario debe seleccionar un mdico de cuidados
primarios. Los doctores aprobados por la compaa aparecen en una lista de una
base de datos SQL Server denominada doctors. La base de datos tambin
incluye las direcciones de los doctores. En este laboratorio, mejoraremos la
pgina doctors.aspx del sitio Web de Coho Winery para permitir a los usuarios
que generen una lista de los doctores de ciudades concretas.
Escenario
Tiempo estimado para
completar el laboratorio:
30 minutos
Ejercicio 0
Configuracin del laboratorio
Para realizar este laboratorio, es necesario haber creado el proyecto de la
aplicacin Web Benefits y el proyecto de la biblioteca de clases BenefitsList.
Estos proyectos pueden haberse creado utilizando Visual Basic .NET o
Microsoft Visual C#
.NET.
Si no se han creado estos proyectos, realizar los siguientes pasos:
Crear la solucin LabApplication
Realizar este procedimiento nicamente si no se ha creado un
archivo de solucin LabApplication.
1. Utilizando Visual Studio .NET, crear una nueva solucin en blanco
denominada LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Solucin en
blanco.
b. En el cuadro de dilogo Nuevo proyecto, escribir LabApplication en el
cuadro de texto Nombre y hacer clic en Aceptar.
Crear el proyecto Benefits
Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto Benefits, o si se ha eliminado.
1. Crear un nuevo proyecto de aplicacin Web ASP.NET, denominado
BenefitsVB o BenefitsCS, en la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual Basic o Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Aplicacin Web ASP.NET,
establecer la ubicacin en http://localhost/BenefitsVB para el proyecto
Visual Basic .NET o en http://localhost/BenefitsCS para el proyecto
Visual C#.
d. Hacer clic en Agregar a Solucin, y hacer clic en Aceptar.
Cuando se agregan proyectos a la solucin, es importante el
uso de maysculas en el nombre del proyecto. Probablemente, utilizaremos
algunos formularios Web Forms ya generados en ste y en otros
laboratorios, por ello, debemos verificar que hemos escrito con maysculas
el nombre del proyecto Benefits.
Importante
Importante
Precaucin
Actualizar el proyecto Benefits
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
3. Buscar los archivos de proyecto.
Ir a la carpeta VB\Starter\BenefitsVB
Ir a la carpeta CS\Starter\BenefitsCS.
Estas carpetas pueden encontrarse dentro del fichero labs08.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente BenefitsList, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de sobrescribir o recargar los archivos.
Crear la biblioteca de clases BenefitsList
Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto BenefitsList, o si se ha eliminado.
1. Crear un nuevo proyecto de biblioteca de clases.
Crear un nuevo proyecto de biblioteca de clases Microsoft Visual Basic
.NET con el nombre BenefitsListVB, y agregarlo a la solucin
LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual Basic.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListVB.
d. Hacer clic en Agregar a solucin, y clic en Aceptar.
Crear un nuevo proyecto de biblioteca de clases Microsoft Visual C#
.NET con el nombre BenefitsListCS, y agregarlo a la solucin
LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre a BenefitsListCS.
d. Hacer clic en Agregar a solucin, y clic en Aceptar.
Verificar que se han escrito correctamente las maysculas del
proyecto BenefitsList.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Importante
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Precaucin
Actualizar el proyecto BenefitsList
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
3. Ir al proyecto BenefitsList.
Ir a la carpeta VB\Starter\BenefitsListVB.
Ir a la carpeta CS\Starter\BenefitsListCS.
Estas carpetas pueden encontrarse dentro del fichero labs08.zip
4. En el cuadro Archivos del tipo del cuadro de dilogo Agregar elemento
existente BenefitsList, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de sobrescribir o recargar los archivos.
Crear una referencia al componente BenefitsList del proyecto Benefits
1. En el proyecto Benefits de la solucin LabApplication, completar los
siguientes pasos para agregar una referencia al componente BenefitsList
que acabamos de crear:
a. Hacer clic con el botn derecho en el proyecto BenefitsVB o
BenefitsCS en el Explorador de soluciones y hacer clic en Agregar
referencia.
b. En el cuadro de dilogo Agregar referencia, en la pestaa Proyectos,
hacer doble clic en el proyecto BenefitsListVB o BenefitsListCS.
c. En la lista Componentes seleccionados, seleccionar el componente
BenefitsListVB o BenefitsListCS, y hacer clic en Aceptar.
El componente se agrega a la carpeta Referencias en el Explorador de
soluciones.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Ejercicio 1
Utilizar un SqlDataReader
En este ejercicio, rellenaremos un cuadro de lista en la pgina doctors.aspx con
las ciudades donde se encuentran los doctores. Cuando el usuario selecciona
una ciudad, crearemos una nueva vista DataSet de los datos y mostraremos los
datos en el DataGrid.
Agregar el cuadro lista
1. Abrir la pgina doctors.aspx del proyecto BenefitsVB o BenefitsCS.
2. Mediante una operacin de arrastrar y soltar, ubicar un control
DropDownList en la pgina doctors.aspx, como muestra la siguiente
ilustracin. El cuadro de lista mostrar las ciudades donde se encuentran los
doctores.
3. Establecer la propiedad ID del control DropDownList en lstCities.
Leer la lista de ciudades de la base de datos doctors
1. Abrir la pgina de cdigo subyacente de la pgina doctors.aspx,
doctors.aspx.vb o doctors.aspx.cs, e ir al procedimiento de evento
Page_Load.
2. Si se est utilizando C#para completar este laboratorio, introducir la
siguiente instruccin using tras las instrucciones using en la parte superior
del archivo doctors.aspx.cs.
using System.Data.SqlClient;
3. Localizar el siguiente comentario:
'TODO Lab10: bind the listbox to city field in the doctors table
//TODO Lab10: bind the listbox to city field in the doctors table
4. Escribir cdigo para crear un objeto SqlCommand y leer el campo city de
la tabla doctors en la base de datos SQL Server doctors. Utilizar el objeto
SqlConnection que se ha creado en la pgina.
Visual C#
Visual Basic .NET
C#
El comando SqlCommand debera ser "SELECT city FROM doctors."
5. Escribir cdigo para abrir la conexin a la base de datos.
6. Escribir cdigo para crear un objeto SqlDataReader desde el objeto
SqlCommand invocando el mtodo ExecuteReader del objeto
SqlCommand.
7. Escribir cdigo para establecer las propiedades de la lista desplegable
lstCities como se muestra en la siguiente tabla.
Propiedad Valor
DataSource Objeto SqlDataReader
DataTextField "city"
8. Escribir cdigo para invocar el mtodo DataBind del cuadro de lista
desplegable lstCities.
9. Escribir cdigo para cerrar los objetos DataReader y Connection.
El cdigo debera ser similar al siguiente:
Dim cmdCities As New SqlCommand _
("SELECT city FROM doctors", SqlConnection1)
Dim drCities As SqlDataReader
SqlConnection1.Open()
drCities = cmdCities.ExecuteReader()
lstCities.DataSource = drCities
lstCities.DataTextField = "city"
lstCities.DataBind()
drCities.Close()
SqlConnection1.Close()
SqlCommand cmdCities = new SqlCommand
("Select city FROM doctors", sqlConnection1);
sqlDataReader drCities;
sqlConnection1.Open();
drCities = cmdCities.ExecuteReader();
lstCities.DataSource = drCities;
lstCities.DataTextField = "city";
lstCities.DataBind();
drCities.Close();
sqlConnection1.Close();
Visual Basic .NET
C#
10. Generar y examinar la pgina doctors.aspx.
El cuadro de lista desplegable City debera mostrar la lista de ciudades
donde se encuentran los doctores.
Observar que el cuadro lista City muestra una ciudad por cada fila de la
base de datos. Aunque este mtodo funciona, no es la forma ms amigable
de mostrar la informacin sobre las ciudades. Qu podemos hacer para
mejorarlo?
____________________________________________________________
____________________________________________________________
El Laboratorio Invocar procedimientos almacenados con Microsoft
ADO.NET presenta una solucin a este problema.
Crear un DataView para el DataGrid
1. Establecer a true la propiedad AutoPostBack del cuadro de lista
desplegable lstCities.
2. Crear un procedimiento de evento SelectedIndexChanged para el cuadro
de lista desplegablelstCities.
En el procedimiento de evento SelectedIndexChanged, agregaremos el
cdigo para mostrar en el control DataGrid nicamente los doctores de la
ciudad seleccionada. Por ejemplo, si se selecciona Seattle en el cuadro de
lista desplegable, el control DataGrid nicamente mostrar doctores de esta
ciudad.
3. Leer la ciudad seleccionada en el cuadro de lista desplegable lstCities y
almacenar el nombre de la ciudad en una variable String denominada
strCity.
4. Rellenar el DataSet DsDoctors1 utilizando el DataAdapter
sqlDataAdapter1.
5. Crear un nuevo DataView desde Table(0) del DataSet.
6. Establecer la propiedad RowFilter del DataView para mostrar nicamente
los registros en los que el campo city sea igual a la ciudad seleccionada en
el cuadro de lista desplegablelstCities.
7. Establecer la propiedad DataSource del control DataGrid al nuevo
DataView.
Nota
8. Invocar el mtodo DataBind del control DataGrid.
El cdigo debera ser similar al siguiente:
Dim strCity As String = Trim(lstCities.SelectedItem.Value)
SqlDataAdapter1.Fill(DsDoctors1)
Dim dvDocs As New DataView(DsDoctors1.Tables(0))
dvDocs.RowFilter = "city = '" & strCity & "'"
dgDoctors.DataSource = dvDocs
dgDoctors.DataBind()
string strCity = lstCities.SelectedItem.Value.Trim();
sqlDataAdapter1.Fill(dsDoctors1);
DataView dvDocs = new DataView(dsDoctors1.Tables[0]);
dvDocs.RowFilter = "City = '" + strCity + "' ";
dgDoctors.DataSource = dvDocs;
dgDoctors.DataBind();
9. En vista de Diseo, eliminar la configuracin de las propiedades
DataSource y DataMember para el control DataGrid:
a. En la pgina doctors.aspx, seleccionar el control DataGrid dgDoctors.
b. En la ventana Propiedades, seleccionar DataMember, resaltar el valor
doctors, y pulsar SUPRIMIR.
c. En la ventana Propiedades, seleccionar DataSource, resaltar el valor
dsDoctors1, y pulsar SUPRIMIR.
Estamos eliminando estas configuraciones de propiedades porque
entran en conflicto con el cdigo que hemos agregado en los pasos
anteriores. Cuando las propiedades se establecen tanto en el cdigo como en
la interfaz de usuario (IU), el resultado obtenido es impredecible.
10. En el procedimiento de evento Page_Load, inmediatamente despus del
cdigo para rellenar el objeto DataSet dsDoctors1, establecer el
DataSource del DataGrid dgDoctors al objeto DataSet DsDoctors1. El
cdigo debera ser similar al siguiente, con la lnea recin agregada en
negrita:
SqlDataAdapter1.Fill(DsDoctors1)
dgDoctors.DataSource = DsDoctors1
dgDoctors.DataBind()
sqlDataAdapter1.Fill(dsDoctors1);
dgDoctors.DataSource = dsDoctors1;
dgDoctors.DataBind();
11. Generar y examinar la pgina doctors.aspx.
Cuando seleccionamos una ciudad en el cuadro de lista City, el DataGrid
dgDoctors muestra nicamente los doctores ubicados en la ciudad
seleccionada.
Visual Basic .NET
C#
Nota
Visual Basic .NET
C#
Ejercicio 2
Visualizar doctores de todas las ciudades
En este ejercicio, agregaremos la opcin All al cuadro de lista desplegable City
y restableceremos la funcionalidad a la pgina Web doctors.aspx, que
restablecer los controles del cuadro de lista DataGrid y Specialties a una
configuracin predeterminada.
Agregar un elemento [All] al cuadro lista
1. Abrir la pgina de cdigo subyacente para la pgina doctors.aspx,
doctors.aspx.vb o doctors.aspx.cs, e ir al procedimiento de evento
Page_Load.
2. Localizar el siguiente comentario:
'TODO Lab10: add the "All" item to the list and select it
//TODO Lab10: add the "All" item to the list and select it
3. Invocar el mtodo Add de la coleccin lstCities.Items para agregar un
nuevo elemento a la lista denominado [All].
4. Establecer la propiedad SelectedIndex del cuadro de lista desplegable
lstCities al ltimo elemento de la lista (que es el elemento [All] que
acabamos de aadir).
El cdigo debera ser similar al siguiente:
lstCities.Items.Add("[All]")
lstCities.SelectedIndex = lstCities.Items.Count 1
lstCities.Items.Add("[All]");
lstCities.SelectedIndex = lstCities.Items.Count 1;
Comprobar la seleccin de [All] en el procedimiento de evento
SelectedIndexChanged
1. En el archivo doctors.aspx.vb o the doctors.aspx.cs, ir al procedimiento de
evento lstCities_SelectedIndexChanged.
2. Agregar una prueba al procedimiento de evento
lstCities_SelectedIndexChanged, despus de rellenar el DataSet, pero
antes de invocar el mtodo DataBind, para ver si el elemento [All] estaba
seleccionado.
3. Si el elemento [All] est seleccionado, establecer el DataSource del control
dgDoctors DataGrid a todo el DataSet DsDoctors1.
4. Si una ciudad est seleccionada en el cuadro de lista desplegablelstCities,
crear un DataView para mostrar nicamente los doctores ubicados en esa
ciudad, y asignar el DataSource del DataGrid dgDoctors al DataView.
5. Invocar la funcin reset para eliminar las pginas o selecciones del
DataGrid.
La funcin reset ya est en la pgina de cdigo subyacente doctors.aspx.vb
o doctors.aspx.cs.
Visual Basic .NET
C#
Visual Basic .NET
C#
El procedimiento de evento lstCities_SelectedIndexChanged debera ser
similar al siguiente:
Private Sub lstCities_SelectedIndexChanged(...
Dim strCity As String = _
Trim(lstCities.SelectedItem.Value)
SqlDataAdapter1.Fill(DsDoctors1)
If strCity = "[All]" Then
dgDoctors.DataSource = DsDoctors1
Else
Dim dvDocs As New DataView(DsDoctors1.Tables(0))
dvDocs.RowFilter = "city = '" & strCity & "'"
dgDoctors.DataSource = dvDocs
End If
reset()
dgDoctors.DataBind()
End Sub
private void lstCities_SelectedIndexChanged(...
{
string strCity =
lstCities.SelectedItem.Value.Trim();
sqlDataAdapter1.Fill(dsDoctors1);
if (strCity == "[All]")
{
dgDoctors.DataSource = dsDoctors1;
}
else
{
DataView dvDocs =
new DataView(dsDoctors1.Tables[0]);
dvDocs.RowFilter = "city = '" + strCity + "'";
dgDoctors.DataSource = dvDocs;
}
reset();
dgDoctors.DataBind();
}
6. Generar y examinar la pgina doctors.aspx.
7. Hacer clic en el cuadro de lista desplegableCity.
Deberamos ver nicamente los doctores de esa ciudad.
8. Hacer clic en [All] en el cuadro de lista desplegableCity.
Deberamos ver todos los doctores de la base de datos doctors.
Paginacin con la seleccin de ciudad
1. En el archivo doctors.aspx.vb o the doctors.aspx.cs, ir al procedimiento de
evento dgDoctors_PageIndexChanged existente.
2. Recuperar el elemento actualmente seleccionado del cuadro de lista
desplegable lstCities y guardarlo en una variable denominada strCity.
Visual Basic .NET
C#
3. Agregar una prueba, despus de rellenar el DataSet, pero antes de invocar
el mtodo DataBind, para ver si el elemento [All] estaba seleccionado.
4. Si el elemento [All] est seleccionado, establecer la propiedad DataSource
del DataGrid dgDoctors a todo el DataSet DsDoctors1.
5. Si una ciudad est seleccionada en el cuadro de lista desplegablelstCities,
crear un DataView para mostrar nicamente los doctores que estn
ubicados en esa ciudad, y establecer la propiedad DataSource del
DataGrid dgDoctors al DataView.
Al finalizar, todo el procedimiento de evento
dgDoctors_PageIndexChanged debera ser similar al siguiente:
Private Sub dgDoctors_PageIndexChanged(...
Dim strCity As String = _
Trim(lstCities.SelectedItem.Value)
dgDoctors.CurrentPageIndex = e.NewPageIndex
SqlDataAdapter1.Fill(DsDoctors1)
If strCity = "[All]" Then
dgDoctors.DataSource = DsDoctors1
Else
Dim dvDocs As New DataView(DsDoctors1.Tables(0))
dvDocs.RowFilter = "city = '" & strCity & "'"
dgDoctors.DataSource = dvDocs
End If
dgDoctors.DataBind()
End Sub
private void dgDoctors_PageIndexChanged(...
{
string strCity =
lstCities.SelectedItem.Value.Trim();
dgDoctors.CurrentPageIndex = e.NewPageIndex;
sqlDataAdapter1.Fill(dsDoctors1);
if (strCity == "[All]")
{
dgDoctors.DataSource = dsDoctors1;
}
else
{
DataView dvDocs =
new DataView(dsDoctors1.Tables[0]);
dvDocs.RowFilter = "city = '" + strCity + "'";
dgDoctors.DataSource = dvDocs;
}
dgDoctors.DataBind();
}
6. Generar y examinar la pgina doctors.aspx.
Probar seleccionando una ciudad y, a continuacin, un nmero de pgina.
Visual Basic .NET
C#
NDICE
Descripcin 1
Leccin: descripcin de los procedimientos almacenados 2
Leccin: invocar procedimientos almacenados 9
Invocar procedimientos almacenados
con Microsoft ADO.NET
Invocar procedimientos almacenados con Microsoft ADO.NET 1
Descripcin
Descripcin de los procedimientos almacenados
Invocar procedimientos almacenados
*****************************
Acceder y manipular datos directamente en una base de datos desde un
formulario Web Form puede constituir un uso muy ineficaz de los recursos, y
puede crear riesgos de seguridad. Una forma de mejorar la eficacia y seguridad
del acceso a las bases de datos es crear procedimientos almacenados en el
servidor de la base de datos, e invocar estos procedimientos almacenados desde
nuestro formulario Web Form. Acceder a una base de datos a travs de un
procedimiento almacenado limita el cdigo del formulario Web Form y el
ancho de banda de la red que debemos utilizar cuando realizamos tareas
complicadas. Acceder a una base de datos mediante un procedimiento
almacenado tambin protege la base de datos al limitar el acceso directo a la
base de datos a procedimientos almacenados locales y de confianza.
En este mdulo, estudiaremos cmo realizar las tareas de acceso a datos desde
las aplicaciones Web utilizando MicrosoftADO.NET para acceder a
procedimientos almacenados.
En este mdulo, aprenderemos a:
Explicar qu es un procedimiento almacenado y los motivos para utilizarlos
en el acceso a una base de datos.
Invocar procedimientos almacenados.
Introduccin
Objetivos
2 Invocar procedimientos almacenados con Microsoft ADO.NET
Leccin: descripcin de los procedimientos almacenados
Ques un procedimiento almacenado?
Por quutilizar procedimientos almacenados?
Prctica: seleccionar el procedimientoalmacenado
correcto
*****************************
Una alternativa al acceso directo a bases de datos desde nuestra aplicacin Web
es invocar un procedimiento almacenado que acceder a la base de datos por
nosotros. El uso de procedimientos almacenados tiene varias ventajas respecto
al acceso directo a bases de datos, incluyendo la eficacia, seguridad y la
proteccin de la base de datos.
En esta leccin, aprenderemos qu es un procedimiento almacenado y los
motivos para invocar procedimientos almacenados cuando se accede a una base
de datos.
En esta leccin, aprenderemos a:
Describir qu es un procedimiento almacenado.
Explicar los motivos para utilizar procedimientos almacenados para acceder
y manipular bases de datos.
Introduccin
Objetivos de la leccin
Invocar procedimientos almacenados con Microsoft ADO.NET 3
Qu es un procedimiento almacenado?
Procedimientos comunes de datos que pueden ser
invocados por mltiples aplicaciones Web
Acceso programtico a una base de datos
Devolver registros
Devolver un valor
Realizar accin
Cliente Cliente
SQL Server
SQL Server
Formulario
Web Form
Procedimiento
almacenado
Procedimiento
almacenado
Servidor Web
Servidor Web
Base datos
*****************************
Un procedimiento almacenado es un procedimiento escrito por un desarrollador
de aplicaciones para bases de datos y que est asociado a una base de datos
especfica. A continuacin, otras aplicaciones Web pueden invocar estos
procedimientos almacenados para acceder y manipular datos de la base de
datos.
Los procedimientos almacenados permiten el acceso a una base de datos
mediante la invocacin de un procedimiento existente en lugar de tener que
escribir nuestras propias instrucciones SQL. Los procedimientos almacenados
estn formados por secuencias de instrucciones Transact-SQL, y funcionan de
modo similar a los procedimientos de una aplicacin Web en cuanto a que las
instrucciones se invocan por su nombre, y pueden tener tanto parmetros de
entrada como de salida.
Los tres tipos de procedimientos almacenados son:
Procedimientos almacenados que devuelven registros
Los procedimientos almacenados que devuelven registros se utilizan para
encontrar registros especficos, clasificar y filtrar esos registros, y devolver
el resultado de las operaciones de bsqueda, clasificacin y filtrado a un
objeto DataSet o un control enlazado a lista. Estos procedimientos
almacenados se basan en instrucciones Select de SQL.
Un ejemplo de un procedimiento almacenado que devuelve registros es una
peticin de la cantidad, fecha y receptor de los tres ltimos movimientos
procesados en una cuenta bancaria. Estos datos podran cargarse en un
objeto DataSet para su posterior procesamiento, o mostrarse directamente al
usuario en un control ListBox.
Introduccin
Acceso programtico a
una base de datos
4 Invocar procedimientos almacenados con Microsoft ADO.NET
Procedimientos almacenados que retornan un valor, tambin denominados
procedimientos almacenados escalares
Los procedimientos almacenados que retornan un valor se utilizan para
ejecutar un comando o funcin de la base de datos que devuelve un nico
valor. Debido a que slo se devuelve un valor, los procedimientos
almacenados que retornan un valor a menudo se utilizan en el cdigo y, a
continuacin, el resultado se muestra a los usuarios.
Un ejemplo de procedimiento almacenado que retorna un valor es devolver
el valor total de los tres ltimos movimientos que se han procesado en una
cuenta bancaria.
Los procedimientos almacenados de accin
Los procedimientos almacenados de accin se utilizan para realizar algunas
funciones en la base de datos, pero no devuelven un registro o un valor.
Estas funciones de la base de datos pueden incluir actualizar, editar o
modificar los datos.
Un ejemplo de un procedimiento almacenado de accin es una peticin para
actualizar una sola direccin de correo en la base de datos de clientes de una
compaa.
Invocar procedimientos almacenados con Microsoft ADO.NET 5
Por qu utilizar procedimientos almacenados?
Programacin modular
Distribucin del trabajo
Seguridad de la base de datos
Ejecucin ms rpida
Reduce el trfico de red
Proporciona flexibilidad
*****************************
Es ms fcil, ms eficaz y ms seguro utilizar un procedimiento almacenado
que escribir el cdigo requerido para conectarnos directamente a una base de
datos y ejecutar nuestras propias instrucciones Transact-SQL. Invocar un
procedimiento almacenado no requiere que entendamos cmo est diseada la
base de datos, y slo se accede a la base de datos mediante un procedimiento ya
probado.
Los procedimientos almacenados son ejemplos clsicos de programacin
modular. Creamos el procedimiento una vez, lo probamos una vez, lo
almacenamos en el servidor de la base de datos, y lo invocamos varias veces
desde mltiples aplicaciones. Las actualizaciones o cambios a la base de datos
permanecen ocultas para todas las aplicaciones que acceden mediante el
procedimiento almacenado.
Un desarrollador especialista en la programacin de bases de datos puede crear
los procedimientos almacenados, mientras que otros desarrolladores pueden
crear paralelamente las aplicaciones Web que utilizarn el procedimiento
almacenado. Esta distribucin del trabajo permite que cada desarrollador se
concentre en su propia especialidad, y cumpla con sus propios plazos.
El uso de procedimientos almacenados proporciona una mayor seguridad para
una base de datos al limitar el acceso directo. nicamente acceden directamente
a la base de datos los procedimientos almacenados probados que han sido
desarrollados por el propietario de la base de datos. Debido a que las dems
aplicaciones Web y otros desarrolladores no acceden directamente a la base de
datos, el riesgo de dao accidental de la estructura o el contenido de la base de
datos es mnimo.
Utilizar instrucciones SQL o Transact-SQL directamente en el cdigo
Microsoft ASP.NET tambin supone un riesgo para la seguridad ya que las
instrucciones pueden dar informacin a un hacker sobre la base de datos y su
estructura. Adems, con el acceso directo a una base de datos, tambin tenemos
el problema de seguridad al intentar determinar qu clase de permisos
deberamos dar a la cuenta de usuario Web sobre las tablas individuales.
Introduccin
Programacin modular
Distribucin del trabajo
Incremento de la
seguridad de la base de
datos
6 Invocar procedimientos almacenados con Microsoft ADO.NET
Si un procedimiento requiere una gran cantidad de cdigo Transact-SQL o si se
invoca repetidamente, el uso de procedimientos almacenados puede dar lugar a
una mayor rapidez de ejecucin que acceder directamente a la base de datos con
cdigo Transact-SQL. Los procedimientos almacenados son parseados y
optimizados cuando se crean, y puede utilizarse una versin en memoria del
procedimiento tras su primera ejecucin.
El acceso directo mediante instrucciones Transact-SQL requiere que las
instrucciones sean enviadas desde el cliente cada vez que se ejecutan. Las
instrucciones son compiladas y optimizadas cada vez que son ejecutadas por el
servidor de la base de datos.
En ocasiones, una operacin que requiere cientos de lneas de cdigo Transact-
SQL puede realizarse mediante una nica instruccin que invoque un
procedimiento almacenado. Enviar una llamada a travs de la red, en lugar de
cientos de lneas de cdigo, reduce el trfico de red.
Si el acceso a la base de datos se realiza a travs de procedimientos
almacenados, el desarrollador de la base de datos puede cambiar la estructura
de la base de datos sin romper las aplicaciones Web que los utilizan. Esta
proteccin permite la continua mejora de la base de datos sin poner en riesgo el
resto del sistema.
Ejecucin ms rpida
Reduccin del trfico de
red
Proporciona flexibilidad
Invocar procedimientos almacenados con Microsoft ADO.NET 7
Prctica: seleccionar el procedimiento almacenado correcto
Los estudiantes:
Decidirn, en determinados escenarios,
qutipo de procedimiento almacenado
debe utilizarse
Tiempo: 5 Minutos
*****************************
Leer los siguientes escenarios y decidir qu tipo de procedimientos
almacenados debera utilizarse:
Devolver registros
Devolver valor
Realizar accin
Debemos determinar los 10 mejores best sellers de la compaa.
____________________________________________________________
____________________________________________________________
Debemos determinar el beneficio neto de un determinado trimestre.
____________________________________________________________
____________________________________________________________
Debemos cambiar todos los prefijos telefnicos 425 de Estados Unidos por
el prefijo 415.
____________________________________________________________
____________________________________________________________
8 Invocar procedimientos almacenados con Microsoft ADO.NET
Debemos determinar qu registros tienen el prefijo telefnico 425 de
Estados Unidos.
_____________________________________________________________
_____________________________________________________________
Debemos eliminar todos los elementos que se han dejado de fabricar de una
determinada categora.
_____________________________________________________________
_____________________________________________________________
Invocar procedimientos almacenados con Microsoft ADO.NET 9
Leccin: invocar procedimientos almacenados
Invocar procedimientos almacenados
Demostracin: invocar un procedimiento almacenado
Prctica: mostrar datos de un procedimiento
almacenado
Utilizar parmetros
Pasar parmetros de entrada
Utilizar parmetros de salida
Demostracin: pasar parmetros
*****************************
Antes de poder invocar un procedimiento almacenado, debemos identificar el
nombre del procedimiento y los parmetros que utiliza. Una vez identificado el
procedimiento almacenado, podemos invocarlo, pasarle los parmetros de
entrada que se requieran para procesar nuestra peticin y gestionar los
parmetros de salida incluidos en la respuesta.
En esta leccin, aprenderemos cmo invocar procedimientos almacenados,
pasar parmetros de entrada y gestionar parmetros de salida.
En esta leccin, aprenderemos a:
Invocar un procedimiento almacenado desde un formulario Web Form.
Identificar el tipo de parmetros disponibles cuando se invocan los
procedimientos almacenados.
Pasar parmetros de entrada cuando se invocan procedimientos
almacenados desde un formulario Web Form.
Utilizar los parmetros de salida de un procedimiento almacenado.
Introduccin
Objetivos de la leccin
10 Invocar procedimientos almacenados con Microsoft ADO.NET
Invocar procedimientos almacenados
Identificar el procedimiento almacenado
Configurar la propiedad SelectCommanddel DataAdapter
Ejecutar el procedimiento almacenado y almacenar los
registros devueltos
Dim daCategory As New SqlDataAdapter()
daCategory.SelectCommand = New SqlCommand()
daCategory.SelectCommand.Connection = conn
daCategory.SelectCommand.CommandText = "ProductCategoryList"
daCategory.SelectCommand.CommandType = CommandType.StoredProcedure
Dim daCategory As New SqlDataAdapter()
daCategory.SelectCommand = New SqlCommand()
daCategory.SelectCommand.Connection = conn
daCategory.SelectCommand.CommandText = "ProductCategoryList"
daCategory.SelectCommand.CommandType = CommandType.StoredProcedure
daCategory.Fill(ds, "Categories")
daCategory.Fill(ds, "Categories")
SqlDataAdapter daCategory = new SqlDataAdapter();
daCategory.SelectCommand = new SqlCommand();
daCategory.SelectCommand.Connection = conn;
daCategory.SelectCommand.CommandText = "ProductCategoryList";
daCategory.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlDataAdapter daCategory = new SqlDataAdapter();
daCategory.SelectCommand = new SqlCommand();
daCategory.SelectCommand.Connection = conn;
daCategory.SelectCommand.CommandText = "ProductCategoryList";
daCategory.SelectCommand.CommandType = CommandType.StoredProcedure;
daCategory.Fill(ds, "Categories");
daCategory.Fill(ds, "Categories");
*****************************
Para invocar un procedimiento almacenado, en primer lugar debemos
identificarlo, crear un objeto DataAdapter, y configurar el objeto
DataAdapter para que apunte a la conexin de la base de datos. Seguidamente,
establecer la propiedad CommandText al nombre del procedimiento
almacenado identificado y, finalmente, establecer la propiedad CommandType
en CommandType.StoredProcedure.
El primer paso para utilizar un procedimiento almacenado es identificar el tipo
y el nombre del mismo. Podemos utilizar un objeto DataAdapter o un objeto
DataReader para invocar los tres tipos de procedimientos almacenados. El
mtodo que invoquemos para ejecutar el procedimiento almacenado variar
dependiendo del tipo de procedimiento almacenado que invoquemos:
Procedimientos almacenados que devuelven registros
Cuando invocamos un procedimiento que devuelve un conjunto de registros,
necesitamos almacenar ese conjunto de registros en un DataSet, o
directamente en un control enlazado a lista utilizando un DataReader. Si
deseamos utilizar un DataSet, debemos utilizar un DataAdapter y el
mtodo Fill. Si deseamos utilizar un DataReader, debemos utilizar un
objeto Command y el mtodo ExecuteReader, y vincular el registro
devuelto al control enlazado a lista.
Procedimientos almacenados que retornan un valor
Cuando invocamos un procedimiento almacenado que devuelve un valor,
invocamos el mtodo ExecuteScalar del objeto Command, y guardamos el
resultado en una variable del tipo de datos apropiado.
Procedimientos almacenados que realizan una accin
Cuando invocamos un procedimiento almacenado que realiza alguna accin
en la base de datos pero no devuelve un conjunto de registros o un valor,
utilizamos el mtodo ExecuteNonQuery del objeto Command.
Introduccin
Identificar el
procedimiento
almacenado
Invocar procedimientos almacenados con Microsoft ADO.NET 11
Para configurar la llamada al procedimiento almacenado, debemos crear un
objeto SqlCommand y guardarlo como la propiedad SelectCommand de un
DataAdapter. A continuacin, debemos establecer las propiedades
Connection, CommandText y CommandType.
Podemos configurar visualmente la llamada a un procedimiento almacenado
utilizando las herramientas para procedimientos almacenados del Cuadro de
herramientas de Microsoft Visual Studio .NET, o podemos escribir
manualmente el cdigo para invocar el procedimiento almacenado. Los
siguientes ejemplos utilizan cdigo manual para mostrar tanto el cdigo
completo como el proceso lgico de invocacin de un procedimiento
almacenado.
Los siguientes ejemplos invocan el procedimiento almacenado
ProductCategoryList. El procedimiento almacenado ProductCategoryList
devuelve una lista de IDs y nombres de categoras de la tabla Categories:
Procedure ProductCategoryList
As
SELECT CategoryID,CategoryName
FROM Categories
El siguiente cdigo utiliza un objeto Connection y un objeto DataAdapter
para invocar el procedimiento almacenado que devuelve registros
ProductCategoryList:
Dim daCategory as New SqlDataAdapter()
daCategory.SelectCommand = New SqlCommand()
daCategory.SelectCommand.Connection = conn
daCategory.SelectCommand.CommandText = _
"ProductCategoryList"
daCategory.SelectCommand.CommandType = _
CommandType.StoredProcedure
SqlDataAdapter daCategory = new SqlDataAdapter();
daCategory.SelectCommand = new SqlCommand();
daCategory.SelectCommand.Connection = conn;
daCategory.SelectCommand.CommandText =
"ProductCategoryList";
daCategory.SelectCommand.CommandType =
CommandType.StoredProcedure;
Tambin podemos establecer directamente la conexin y el texto del
comando cuando creamos el objeto SqlDataAdapter. El siguiente cdigo
realiza la misma tarea que el cdigo anterior:
Dim daCategory As New SqlDataAdapter _
("ProductCategoryList", conn)
daCategory.SelectCommand.CommandType = _
CommandType.StoredProcedure
SqlDataAdapter daCategory = new SqlDataAdapter
("ProductCategoryList", conn);
daCategory.SelectCommand.CommandType =
CommandType.StoredProcedure;
Establecer la propiedad
SelectCommand
Visual Basic .NET
C#
Nota
Visual Basic .NET
C#
12 Invocar procedimientos almacenados con Microsoft ADO.NET
Para ejecutar el procedimiento almacenado y guardar los registros devueltos en
un DataSet, invocar el mtodo Fill del objeto SqlDataAdapter. Este mtodo
rellena un objeto DataTable con los registros devueltos del procedimiento
almacenado.
Por ejemplo, el siguiente cdigo rellena el objeto DataSet ds con los registros
devueltos desde el procedimiento almacenado ProductCategoryList utilizando
el daCategory SqlDataAdapter:
daCategory.Fill(ds, "Categories")
daCategory.Fill(ds, "Categories");
Tras rellenar un DataTable con los resultados de un procedimiento almacenado
Select, podemos vincular el DataTable a un control enlazado a lista para
mostrar los datos.
Ejecutar el
procedimiento
almacenado
Visual Basic .NET
C#
Invocar procedimientos almacenados con Microsoft ADO.NET 13
Demostracin: invocar un procedimiento almacenado
*****************************
En esta demostracin, veremos cmo invocar un procedimiento almacenado de
una base de datos Microsoft SQL Server
utilizando
procedimientos almacenados.
Acceder a procedimientos almacenados utilizando objetos SqlCommand y
SqlDataReader.
Vincular un objeto SqlDataReader a un cuadro de lista.
Este laboratorio se centra en los conceptos de este mdulo. Por ello,
podra no cumplir las recomendaciones de seguridad de Microsoft.
Para trabajar en este laboratorio, es necesario tener:
Conocimientos sobre cmo utilizar los objetos SqlConnection,
SqlDataAdapter, SqlDataReader y SqlCommand de Microsoft
ADO.NET para leer datos de una base de datos SQL Server utilizando
procedimientos almacenados.
Conocimientos sobre cmo crear procedimientos de evento para controles
de servidor.
Conocimientos sobre cmo mostrar datos DataSet y DataReader en un
control enlazado a lista.
Objetivos
Nota
Requisitos previos
Coho Winery ofrece varios beneficios a sus empleados. En los laboratorios de
este curso, crearemos un sitio Web que permita a los empleados seleccionar y
configurar los beneficios que elijan.
Uno de los beneficios que ofrece el seguro mdico. Cuando se solicita un
seguro mdico, el usuario debe seleccionar un mdico de cuidados primarios.
Los doctores aprobados por la compaa aparecen en una lista de una base de
datos SQL Server denominada doctors. La base de datos tambin incluye las
especialidades de los doctores. En este laboratorio, mejoraremos la pgina
doctors.aspx del sitio Web de Coho Winery para permitir a los usuarios ver la
lista de especialidades de un doctor seleccionado.
Escenario
Tiempo estimado para
completar el laboratorio:
30 minutos
Ejercicio 0
Configuracin del laboratorio
Para realizar este laboratorio, es necesario haber creado el proyecto de la
aplicacin Web Benefits y el proyecto de la biblioteca de clases BenefitsList.
Estos proyectos pueden haberse creado utilizando Visual Basic .NET o
Microsoft Visual C#
.NET.
Si no se han creado estos proyectos, realizar los siguientes pasos:
Crear la solucin LabApplication
Realizar este procedimiento nicamente si no se ha creado un
archivo de solucin LabApplication.
1. Utilizando Visual Studio .NET, crear una nueva solucin en blanco
denominada LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Solucin en
blanco.
b. En el cuadro de dilogo Nuevo proyecto, escribir LabApplication en el
cuadro de texto Nombre y hacer clic en Aceptar.
Crear el proyecto Benefits
Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto Benefits t, o si se ha eliminado.
1. Crear un nuevo proyecto de aplicacin Web ASP.NET, denominado
BenefitsVB o BenefitsCS, en la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual Basic o Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Aplicacin Web ASP.NET,
establecer la ubicacin en http://localhost/BenefitsVB para el proyecto
Visual Basic .NET o en http://localhost/BenefitsCS para el proyecto
Visual C#.
d. Hacer clic en Agregar a Solucin, y hacer clic en Aceptar.
Cuando se agregan proyectos a la solucin, es importante el
uso de maysculas en el nombre del proyecto. Probablemente, utilizaremos
algunos formularios Web Forms ya generados en ste y en otros
laboratorios, por ello, debemos verificar que hemos escrito con maysculas
el nombre del proyecto Benefits.
Importante
Importante
Precaucin
Actualizar el proyecto Benefits
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
3. Buscar los archivos de proyecto:
Ir a la carpeta VB\Starter\BenefitsVB para los archivos de Visual Basic
.NET.
Ir a la carpeta CS\Starter\BenefitsCS para los archivos de Visual C#.
Estas carpetas pueden encontrarse dentro del fichero labs09.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente BenefitsList, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de si sobrescribir o recargar los archivos.
Crear la biblioteca de clases BenefitsList
Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto BenefitsList, o si se ha eliminado el proyecto
BenefitsList siguiendo los pasos del Apndice A, Recuperacin del
laboratorio.
1. Crear un nuevo proyecto de biblioteca de clases
Crear un nuevo proyecto de biblioteca de clases Visual Basic .NET con el
nombre BenefitsListVB, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual Basic.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListVB.
d. Hacer clic en Agregar a solucin, y clic en Aceptar.
Crear un nuevo proyecto de biblioteca de clases Visual C#.NET con el
nombre BenefitsListCS, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListCS.
a. Hacer clic en Agregar a solucin, y clic en Aceptar.
Verificar que se han escrito correctamente las maysculas del
proyecto BenefitsList.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Importante
Para el proyecto
Visual Basic .NET
Para el proyecto Visual
C#
Precaucin
Actualizar el proyecto BenefitsList
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
3. Ir al proyecto BenefitsList.
Ir a la carpeta VB\Starter\BenefitsListVB.
Ir a la carpeta CS\Starter\BenefitsListCS.
Estas carpetas pueden encontrarse dentro del fichero labs09.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente BenefitsList, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de sobrescribir o recargar los archivos.
Crear una referencia al componente BenefitsList del proyecto Benefits
1. En el proyecto Benefits de la solucin LabApplication, completar los
siguientes pasos para agregar una referencia al componente BenefitsList
que acabamos de crear:
a. Hacer clic con el botn derecho en el proyecto BenefitsVB o
BenefitsCS en el Explorador de soluciones y hacer clic en Agregar
referencia.
b. En el cuadro de dilogo Agregar referencia, en la pestaa Proyectos,
hacer doble clic en el proyecto BenefitsListVB o BenefitsListCS.
c. En la lista Componentes seleccionados, seleccionar el componente
BenefitsListVB o BenefitsListCS, y hacer clic en Aceptar.
El componente se agrega a la carpeta Referencias en el Explorador de
soluciones.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Ejercicio 1
Obtener nombres de ciudades nicos
En este ejercicio, vincularemos el cuadro de lista desplegable lstCities de la
pgina doctors.aspx de forma que muestre los nombres de ciudades nicos de la
base de datos doctors. Cuando el usuario seleccione una ciudad, el cdigo
crear una nueva vista de los datos del DataSet y mostrar los datos en el
DataGrid.
El cuadro de lista desplegable lstCities actualmente est vinculado al campo de
ciudad de la tabla doctors utilizando un objeto SqlCommand. Esta vinculacin
hace que se muestren todas las ciudades en el cuadro de lista desplegable. En
este ejercicio, utilizaremos un procedimiento almacenado para seleccionar los
nombres de ciudades nicos de la tabla doctors.
Debido a que el cuadro de lista desplegable lstCities est actualmente
vinculado, debemos eliminar esa vinculacin antes de utilizar el procedimiento
almacenado.
Eliminar el cdigo de vinculacin existente
1. Abrir la pgina doctors.aspx.vb del proyecto BenefitsVB o la pgina
doctors.aspc.cs del proyecto BenefitsCS.
2. En el procedimiento de evento Page_Load, buscar el siguiente cdigo:
'TODO: Lab10: bind the listbox to city field
'in the doctors
table
Dim cmdCities As New SqlCommand _
("Select city from doctors", SqlConnection1)
Dim drCities As SqlDataReader
SqlConnection1.Open()
drCities = cmdCities.ExecuteReader()
lstCities.DataSource = drCities
lstCities.DataTextField = "city"
lstCities.DataBind()
drCities.Close()
SqlConnection1.Close()
//TODO Lab10: bind the listbox to city field
//in the doctors table
SqlCommand cmdCities = new SqlCommand
("Select city from doctors", sqlConnection1);
sqlDataReader drCities;
sqlConnection1.Open();
drCities = cmdCities.ExecuteReader();
lstCities.DataSource = drCities;
lstCities.DataTextField = "City";
lstCities.DataBind();
drCities.Close();
sqlConnection1.Close();
3. Comentar este cdigo seleccionando todas las lneas del cdigo y haciendo
clic en el icono Comentario de la Barra de herramientas.
Visual Basic .NET
C#
Vincular el cuadro de lista desplegable utilizando un procedimiento
almacenado
1. Localizar el siguiente comentario:
TODO: Lab11: bind the listbox to the getUniqueCities stored
procedure
2. Crear un nuevo objeto SqlCommand denominado cmdCities que utiliza el
objeto sqlConnection1 para invocar el procedimiento almacenado
getUniqueCities.
3. Establecer el CommandType del objeto cmdCities a Stored Procedure.
4. Abrir el objeto SqlConnection sqlConnection1.
5. Crear un objeto SqlDataReader desde el objeto SqlCommand invocando
el mtodo ExecuteReader del objeto SqlCommand. Poner el nombre
drCities al objeto SqlDataReader.
6. En el cdigo, establecer las propiedades del cuadro de lista desplegable
lstCities como muestra la siguiente tabla.
Propiedad Valor
DataSource drCities
DataTextField "City"
7. Invocar el mtodo DataBind del cuadro de lista desplegablelstCities.
8. Cerrar los objetos DataReader y Connection.
El cdigo debera ser similar al siguiente:
Dim cmdCities As SqlCommand = New _
SqlCommand("getUniqueCities", SqlConnection1)
cmdCities.CommandType = CommandType.StoredProcedure
SqlConnection1.Open()
Dim drCities As SqlDataReader
drCities = cmdCities.ExecuteReader()
lstCities.DataSource = drCities
lstCities.DataTextField = "City"
lstCities.DataBind()
drCities.Close()
SqlConnection1.Close()
SqlCommand cmdCities = new SqlCommand
("getUniqueCities", sqlConnection1);
cmdCities.CommandType = CommandType.StoredProcedure;
sqlConnection1.Open();
sqlDataReader drCities;
drCities = cmdCities.ExecuteReader();
lstCities.DataSource = drCities;
lstCities.DataTextField = "City";
lstCities.DataBind();
drCities.Close();
sqlConnection1.Close();
9. Generar y examinar la pgina doctors.aspx.
El cuadro de lista desplegable City muestra la lista de ciudades donde se
encuentran los doctores. No hay ciudades duplicadas en la lista.
Visual Basic .NET
C#
Ejercicio 2
Obtener las especialidades de los doctores
En este ejercicio, mostraremos las especialidades de un doctor en un cuadro de
lista. Cuando se selecciona un doctor en el objeto DataGrid dgDoctors, se
invoca el procedimiento almacenado getDoctorSpecialty y se muestra el
resultado en el cuadro de listalstSpecialties.
Invocar el procedimiento almacenado getDrSpecialty
1. Crear el procedimiento de evento SelectedIndexChanged.
Abrir el cdigo subyacente de la pgina doctors.aspx y crear un
procedimiento de evento SelectedIndexChanged para el control DataGrid:
a. En la pgina de cdigo subyacente, en la lista desplegableNombre de
clase, hacer clic en dgDoctors.
b. En la lista desplegableNombre de mtodo, hacer clic en
SelectedIndexChanged.
En las propiedades del control dgDoctors DataGrid, hacer clic en Events.
Desplazarse hacia abajo en la lista de eventos y hacer doble clic en el evento
SelectedIndexChanged.
2. Crear una variable de tipo cadena denominada strDrID para guardar el valor
de la columna dr_id para la fila seleccionada por el usuario.
3. Utilizando la coleccin Cells del objeto SelectedItem del DataGrid
dgDoctors, leer el valor del campo dr_id y almacenarlo en la variable
strDrID.
El cdigo debera ser similar al siguiente:
Dim strDrID As String
strDrID = dgDoctors.SelectedItem.Cells.Item(1).Text
string strDrID;
strDrID = dgDoctors.SelectedItem.Cells[1].Text;
4. Crear un nuevo objeto SqlCommand denominado cmdSpecialty que utilice
el objeto sqlConnection1 para invocar el procedimiento almacenado
getDrSpecialty.
5. Establecer el tipo de comando SqlCommand a un procedimiento
almacenado.
El cdigo debera ser similar al siguiente:
Dim cmdSpecialty As New _
SqlCommand("getDrSpecialty", SqlConnection1)
cmdSpecialty.CommandType = CommandType.StoredProcedure
SqlCommand cmdSpecialty = new
SqlCommand( "getDrSpecialty", sqlConnection1);
cmdSpecialty.CommandType = CommandType.StoredProcedure;
6. Crear un objeto SqlParameter denominado paramSpecialty utilizando el
parmetro que se muestra en la siguiente tabla.
Visual Basic .NET
C#
Visual Basic .NET
C#
Visual Basic .NET
C#
Nombre de parmetro Tipo de datos Tamao
@dr_id SqlDbType.Char 4
7. Establecer la propiedad Direction del SqlParameter a Input.
8. Establecer el valor del SqlParameter a la variable strDrID.
9. Agregar el parmetro al objeto SqlCommand utilizando el mtodo Add.
El cdigo debera ser similar al siguiente:
Dim paramSpecialty As New SqlParameter _
("@dr_id", SqlDbType.Char, 4)
paramSpecialty.Direction = ParameterDirection.Input
paramSpecialty.Value = strDrID
cmdSpecialty.Parameters.Add(paramSpecialty)
SqlParameter paramSpecialty = new SqlParameter
("@dr_id", SqlDbType.Char, 4);
paramSpecialty.Direction = ParameterDirection.Input;
paramSpecialty.Value = strDrID;
cmdSpecialty.Parameters.Add(paramSpecialty);
10. Abrir el objeto SqlConnection sqlConnection1.
11. Crear un nuevo objeto SqlDataReader denominado drSpecialty.
12. Rellenar el objeto SqlDataReader desde el objeto SqlCommand
invocando el mtodo ExecuteReader del objeto SqlCommand.
El cdigo debera ser similar al siguiente:
SqlConnection1.Open()
Dim drSpecialty As SqlDataReader
drSpecialty = cmdSpecialty.ExecuteReader()
sqlConnection1.Open();
sqlDataReader drSpecialty;
drSpecialty = cmdSpecialty.ExecuteReader();
Vincular el cuadro de lista lstSpecialties al DataReader drSpecialties y
hacer que est visible
1. En el cdigo, establecer las propiedades del cuadro de lista lstSpecialties
como muestra la siguiente tabla.
Propiedad Valor
DataSource drSpecialty
DataTextField "Specialty"
2. Invocar el mtodo DataBind del cuadro de lista.
Visual Basic .NET
C#
Visual Basic .NET
C#
3. Cerrar los objetos SqlDataReader y SqlConnection.
El cdigo debera ser similar al siguiente:
lstSpecialties.DataSource = drSpecialty
lstSpecialties.DataTextField = "Specialty"
lstSpecialties.DataBind()
drSpecialty.Close()
SqlConnection1.Close()
lstSpecialties.DataSource = drSpecialty;
lstSpecialties.DataTextField = "Specialty";
lstSpecialties.DataBind();
drSpecialty.Close();
sqlConnection1.Close();
4. Agregar cdigo para hacer que el cuadro de lista lstSpecialties y la etiqueta
lblSpecialties estn visibles, pero slo si hay especialidades en el
DataReader.
El cdigo debera ser similar al siguiente:
If Not IsDBNull(drSpecialty) Then
lstSpecialties.Visible = True
lblSpecialties.Visible = True
End If
if (drSpecialty != null)
{
lstSpecialties.Visible = true;
lblSpecialties.Visible = true;
}
5. Generar y examinar la pgina doctors.aspx:
a. En el explorador, seleccionar un doctor de la lista.
El cuadro de lista Specialties muestra las especialidades del doctor
seleccionado.
b. Escoger una ciudad del cuadro de lista desplegableCity y seleccionar un
nuevo doctor.
Es posible que el cuadro de lista Specialties muestre una lista distinta de
especialidades. Si no es as, seleccionar otro doctor para estar seguros de
que el cdigo funciona correctamente.
c. Hacer clic en Submit.
Seremos redireccionados a la pgina medical.aspx, y el nombre del
doctor seleccionado aparece en el cuadro de texto Primary Care
Physician.
Visual Basic .NET
C#
Visual Basic .NET
C#
ndice
Descripcin 1
Leccin: Descripcin de la arquitectura XML en ASP.NET 2
Leccin: XML y el objeto DataSet 10
Leccin: trabajar con datos XML 25
Leccin: uso del control de servidor Web XML 35
Leer y escribir datos XML
Leer y escribir datos XML 1
Descripcin
Descripcin de la arquitectura XML en ASP.NET
XML y el objeto DataSet
Trabajar con datos XML
Utilizar el control de servidor Web XML
*****************************
Aunque se almacena una gran cantidad de datos en bases de datos Microsoft
SQL Server
.NET.
Si no se han creado estos proyectos, realizar los siguientes pasos:
Crear la solucin LabApplication
Realizar este procedimiento nicamente si no se ha creado un
archivo de solucin LabApplication.
1. Utilizando Visual Studio .NET, crear una nueva solucin en blanco
denominada LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Solucin en
blanco.
b. En el cuadro de dilogo Nuevo proyecto, escribir LabApplication en el
cuadro de texto Nombre y hacer clic en Aceptar.
Crear el proyecto Benefits
Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto Benefits, o si se ha eliminado.
1. Crear un nuevo proyecto de aplicacin Web ASP.NET, denominado
BenefitsVB o BenefitsCS, en la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual Basic o Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Aplicacin Web ASP.NET,
establecer la ubicacin en http://localhost/BenefitsVB para el proyecto
Visual Basic .NET o en http://localhost/BenefitsCS para el proyecto
Visual C#.
d. Hacer clic en Agregar a Solucin, y hacer clic en Aceptar.
Cuando se agregan proyectos a la solucin, es importante el
uso de maysculas en el nombre del proyecto. Probablemente, utilizaremos
algunos formularios Web Forms ya generados en ste y en otros
laboratorios, por ello, debemos verificar que hemos escrito con maysculas
el nombre del proyecto Benefits.
Importante
Importante
Precaucin
Actualizar el proyecto Benefits
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
3. Buscar los archivos de proyecto:
Ir a la carpeta VB\Starter\BenefitsVB para los archivos de Visual Basic
.NET.
Ir a la carpeta CS\Starter\BenefitsCS para los archivos de Visual C#.
Estas carpetas pueden encontrarse dentro del fichero labs10.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente Benefits, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de si sobrescribir o recargar los archivos.
Crear la biblioteca de clases BenefitsList
Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto BenefitsList, o si se ha eliminado.
1. Crear un nuevo proyecto de biblioteca de clases:
Crear un nuevo proyecto de biblioteca de clases Visual Basic .NET con el
nombre BenefitsListVB, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual Basic.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListVB.
d. Hacer clic en Agregar a solucin, y clic en Aceptar.
Crear un nuevo proyecto de biblioteca de clases Visual C#.NET con el
nombre BenefitsListCS, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListCS.
a. Hacer clic en Agregar a solucin, y clic en Aceptar.
Verificar que se han escrito correctamente las maysculas del
proyecto BenefitsList.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Importante
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Precaucin
Actualizar el proyecto BenefitsList
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
3. Ir al proyecto BenefitsList.
Ir a la carpeta VB\Starter\BenefitsListVB.
Ir a la carpeta CS\Starter\BenefitsListCS.
Estas carpetas pueden encontrarse dentro del fichero labs10.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente BenefitsList, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de si sobrescribir o recargar los archivos.
Crear una referencia al componente BenefitsList del proyecto Benefits
1. En el proyecto Benefits de la solucin LabApplication, completar los
siguientes pasos para agregar una referencia al componente BenefitsList
que acabamos de crear:
a. Hacer clic con el botn derecho en el proyecto BenefitsVB o
BenefitsCS en el Explorador de soluciones y hacer clic en Agregar
referencia.
b. En el cuadro de dilogo Agregar referencia, en la pestaa Proyectos,
hacer doble clic en el proyecto BenefitsListVB o BenefitsListCS.
c. En la lista Componentes seleccionados, seleccionar el componente
BenefitsListVB o BenefitsListCS, y hacer clic en Aceptar.
El componente se agrega a la carpeta Referencias en el Explorador de
soluciones.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Ejercicio 1
Leer una lista de fondos comunes de inversin de un archivo XML
En este ejercicio, leeremos una lista de los fondos comunes de inversin del
archivo mutual_funds.xml y los almacenaremos en un DataSet. A
continuacin, mostraremos el DataSet en un control DataGrid.
Leer una lista de fondos comunes de inversin
1. Abrir el proyecto Benefits en la solucin LabApplication Visual Studio
.NET.
2. Agregar archivos al proyecto Benefits:
a. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsVB o BenefitsCS, seleccionar Agregar, y escoger Agregar
elemento existente.
b. Ir a la carpeta de beneficios:
VB\Starter\BenefitsVB.
CS\Starter\BenefitsCS.
Estas carpetas pueden encontrarse dentro del fichero labs10.zip
c. En el cuadro de lista desplegable Archivos de tipo, hacer clic en Todos
los archivos (*.*).
d. Seleccionar los siguientes archivos y hacer clic en Abrir:
retirement.aspx
prospectus.aspx
mutual_funds.xml
lgcap.xml
growth.xml
midcap.xml
smcap.xml
prospectus_style.xsl
3. Abrir el archivo mutual_funds.xml y examinar su contenido. Cules son
los dos campos (elementos) de cada fondo?
_____________________________________________________________
_____________________________________________________________
4. Abrir el formulario Web Form retirement.aspx.
Se ha agregado ya un control DataGrid a la pgina. Este DataGrid tiene
dos columnas personalizadas, una columna Name para mostrar el nombre
de un fondo comn de inversin, y una columna Link to prospectus, que
contiene un hiperenlace al formulario Web Form prospectus.aspx. En los
siguientes pasos, llenaremos este DataGrid con datos de un archivo XML.
Visual Basic .NET
C#
5. Abrir la pgina de cdigo subyacente retirement.aspx.vb o
retirement.aspx.cs y localizar el siguiente comentario en el procedimiento de
evento Page_Load:
'TODO Lab 12: Create a DataSet, fill it with the
'XML file, and display it
//TODO Lab 12: Create a DataSet, fill it with the
//XML file, and display it
6. Llenar el DataSet con los datos del archivo XML y mostrar el DataSet en
el control DataGrid dgRetirement:
a. Crear un DataSet denominado dsRetirement.
b. Invocar el mtodo ReadXml del DataSet para leer el archivo
mutual_funds.xml.
c. Establecer la fuente de datos del DataGrid dgRetirement en
dsRetirement.
d. Invocar el mtodo DataBind del DataGrid.
El cdigo debera ser similar al siguiente:
Dim dsRetirement As New DataSet()
dsRetirement.ReadXml( _
Server.MapPath("mutual_funds.xml"))
dgRetirement.DataSource = dsRetirement
dgRetirement.DataBind()
DataSet dsRetirement = new DataSet();
dsRetirement.ReadXml( Server.MapPath("mutual_funds.xml"));
dgRetirement.DataSource = dsRetirement;
dgRetirement.DataBind();
Para qu se utiliza el mtodo Server.MapPath?
____________________________________________________________
____________________________________________________________
7. Guardar los cambios.
8. Generar y examinar la pgina retirement.aspx.
Deberamos ver todos los nombres de los fondos comunes de inversin,
adems de enlaces a los prospectos de fondos comunes de inversin del
DataGrid.
Aunque los enlaces a los prospectos no funcionan en este momento, abrirn
una pgina denominada prospectus.aspx y le pasarn un identificador id de
prospecto en el parmetro ProspID. Generaremos la pgina prospectus.aspx
para mostrar el prospecto solicitado en el Ejercicio 2.
Visual Basic .NET
C#
Visual Basic .NET
C#
Ejercicio 2
Leer, transformar y mostrar XML
En este ejercicio, utilizaremos el control Xml para leer, transformar y mostrar el
prospecto de un determinado fondo comn de inversin.
Leer y mostrar un prospecto
1. Abrir el archivo lgcap.xml y examinar su contenido.
Cules son los tres campos (elementos) de un prospecto?
_____________________________________________________________
_____________________________________________________________
2. Abrir el archivo prospectus_style.xsl y examinar su contenido.
Prospectus_style.xsl es un archivo de hoja de estilo XML que utiliza XSLT
para mostrar datos XML. Cul ser el ttulo de la pgina del prospecto?
Qu color se utilizar para mostrar el texto General Description?
_____________________________________________________________
_____________________________________________________________
3. Abrir el formulario Web Form prospectus.aspx.
Esta pgina actualmente contiene el control de usuario header.ascx y un
nico hiperenlace.
4. Arrastrar un control Xml del Cuadro de herramientas en la pgina
prospectus.aspx, para que la pgina sea similar a la siguiente ilustracin.
5. Establecer las propiedades del control Xml en la ventana Propiedades, como
muestra la siguiente tabla.
Propiedad Valor
ID xmlProspectus
DocumentSource lgcap.xml
6. Generar y examinar la pgina prospectus.aspx.
Deberamos ver el contenido del prospecto lgcap.xml como una cadena de
texto continua y sin formato.
Aplicar una transformacin al prospecto
1. Abrir el formulario Web Form prospectus.aspx.
2. Establecer la propiedad TransformSource del control xmlProspectus en
prospectus_style.xsl.
3. Generar y examinar la pgina prospectus.aspx.
Deberamos ver el contenido del prospecto lgcap.xml como Hypertext
Markup Language (HTML) con formato.
Modificar la propiedad DocumentSource del control Xml
dinmicamente
Ahora utilizaremos un parmetro de cadena denominado ProspID para
seleccionar qu prospectos se mostrarn:
1. Abrir el formulario Web Form prospectus.aspx.
2. En la ventana Propiedades, eliminar la propiedad DocumentSource del
control xmlProspectus.
3. Abrir la pgina de cdigo subyacente de prospectus.aspx.
Abrir la pgina prospectus.aspx.vb y localizar el siguiente comentario en el
procedimiento de evento Page_Load:
'TODO Lab 12: Dynamically select the prospectus
Abrir la pgina prospectus.aspx.cs y localizar el siguiente comentario en el
procedimiento de evento Page_Load:
//TODO Lab 12: Dynamically select the prospectus
4. Leer el parmetro ProspID de la cadena de consulta solicitada y almacenar
el parmetro en una variable denominada strProspID.
El cdigo debera ser similar al siguiente:
Dim strProspID As String = Request.Params("ProspID")
string strProspID = Request.Params["ProspID"];
Visual Basic .NET
C#
Visual Basic .NET
C#
5. En el cdigo, establecer la propiedad DocumentSource del control
xmlProspectus con el valor de la variable strProspID, concatenado con
una extensin .xml.
El cdigo debera ser similar al siguiente:
xmlProspectus.DocumentSource = strProspID & ".xml"
xmlProspectus.DocumentSource = strProspID + ".xml";
6. Guardar los cambios de la pgina prospectus.aspx.
7. Generar y examinar la pgina retirement.aspx.
8. Hacer clic en el enlace Prospectus junto a Large cap stocks.
Deberamos ver el prospecto del fondo comn de inversin Large cap
stocks.
9. Hacer clic en el enlace Back to retirement page.
10. Probar los enlaces Prospectus para Growth stocks, Mid-cap stocks y
Small-cap stocks.
Visual Basic .NET
C#
Ejercicio 3 (si se dispone de tiempo)
Datos anidados
En este ejercicio, experimentaremos con la generacin de datos XML anidados
de una base de datos Microsoft SQL Server
.
Generar datos secuenciales
1. Agregar el formulario Web Form nestedData.aspx de la carpeta Benefits.
Este archivo puede encontrarse en la carpeta del proyecto Benefits:
VB\Starter\BenefitsVB.
CS\Starter\BenefitsCS.
Estas carpetas pueden encontrarse dentro del fichero labs10.zip
2. Abrir el formulario Web Form nestedData.aspx.
3. Abrir la pgina de cdigo subyacente nestedData.aspx.vb o
nestedData.aspx.cs y examinar el cdigo.
El cdigo genera un DataSet denominado dsDoctorsSpecialities, que
contiene tres objetos DataTable: doctors, drspecialties y specialties. El
cdigo crea relaciones entre las tres tablas.
Qu columna vincula los objetos DataTable doctors y drspecialties en la
DataRelation relation1? Cul es la DataTable primaria de esta relacin?
____________________________________________________________
____________________________________________________________
4. Generar y examinar la pgina nestedData.aspx y analizar el XML creado.
Son datos anidados?
____________________________________________________________
____________________________________________________________
5. Localizar el siguiente comentario en el procedimiento de evento
Page_Load:
'TODO Lab 12: Create a nested relationship between the
doctors and drspecialties DataTable objects
//TODO Lab 12: Create a nested relationship between the
doctors and drspecialties DataTable objects
Visual Basic .NET
C#
Visual Basic .NET
C#
6. Quitar el comentario de la siguiente lnea de cdigo para crear una relacin
anidada entre los objetos DataTable doctors y drspecialties:
'dr1.Nested = True
//dr1.Nested = true;
7. Generar, examinar nestedData.aspx y analizar el XML creado.
Es posible que sea necesario actualizar el explorador despus
de que se haya cargado la pgina para ver los cambios de los datos XML.
Qu ha cambiado respecto a la respuesta XML anterior?
_____________________________________________________________
_____________________________________________________________
8. Eliminar la lnea de cdigo de la que quitamos el comentario en el Paso 6.
9. Localizar el siguiente comentario en el procedimiento de evento
Page_Load:
'TODO Lab 12: Create a nested relationship between the
specialties and drspecialties DataTable objects
//TODO Lab 12: Create a nested relationship between the
specialties and drspecialties DataTable objects
10. Quitar el comentario de la siguiente lnea de cdigo para crear una relacin
anidada entre los objetos DataTable specialties y drspecialties:
'dr2.Nested = True
//dr2.Nested = true;
11. Generar y examinar la pgina nestedData.aspx y analizar el XML creado.
Es posible que sea necesario actualizar el navegador despus
de que se haya cargado la pgina para ver los cambios de los datos XML.
Qu ha cambiado respecto a la respuesta XML anterior?
_____________________________________________________________
_____________________________________________________________
No podemos utilizar las dos relaciones anidadas al mismo tiempo
debido a que el mismo objeto DataTable (drspecialties) no puede ser
secundario en dos relaciones anidadas.
Visual Basic .NET
C#
Sugerencia
Visual Basic .NET
C#
Visual Basic .NET
C#
Sugerencia
Nota
ndice
Descripcin 1
Leccin: descripcin del uso de servicios Web XML 2
Leccin: invocar un servicio Web XML utilizando HTTP 11
Leccin: utilizar un proxy para invocar un servicio Web
XML 16
Leccin: crear un servicio Web XML 28
Crear y consumir
servicios Web XML
Crear y consumir servicios Web XML 1
Descripcin
Introduccin al uso de servicios Web XML
Invocar un servicio Web XML utilizando HTTP
Utilizar un proxypara invocar un servicio Web XML
Crear un servicio Web XML
*****************************
Internet ha contribuido a facilitar a las empresas una mejor comunicacin
interna y entre empresas proporcionando un rpido acceso a la informacin. Sin
embargo, la navegacin por pginas basadas en datos no responde
adecuadamente a las necesidades de negocio de muchas empresas. Satisfacera
mejor sus necesidades disponer de sitios Web programables que enlazaran
directamente organizaciones, aplicaciones y servicios. Este enlace directo entre
aplicaciones es el papel que desempean los servicios Web XML. Al enlazar
nuestras aplicaciones y sitios Web a servicios Web XML, tenemos la
oportunidad de expandir la funcionalidad que ofrece nuestro sitio Web a los
usuarios.
En este mdulo, estudiaremos cmo invocar un servicio Web XML
directamente con un navegador y mediante un proxy desde un formulario Web
Form. Tambin estudiaremos cmo crear y publicar servicios Web XML
utilizando MicrosoftVisual Studio .NET.
En este mdulo, aprenderemos a:
Describir la utilidad y el proceso existente tras la invocacin a un servicio
Web XML desde un formulario Web Form.
Invocar un Servicio Web XML directamente desde un navegador utilizando
Hypertext Transfer Protocol (HTTP).
Crear un proxy de referencia Web para el mtodo de un Servicio Web
XML, e invocar ese mtodo Web desde un formulario Web Form.
Utilizar las plantillas de Visual Studio .NET para crear un servicio Web
XML.
Introduccin
Objetivos
2 Crear y consumir servicios Web XML
Leccin: descripcin del uso de servicios Web XML
Ques un servicio Web XML?
Por quutilizar servicios Web XML?
Buscar un servicio Web XML
Multimedia: modelo de ejecucin del servicio Web XML
*****************************
Uno de los retos con los que podemos enfrentarnos en la creacin de sitios Web
con rica funcionalidad es la integracin de aplicaciones. A menudo,
necesitamos combinar varias aplicaciones para formar una solucin nica y
fcil de utilizar. El problema de intentar conseguir una solucin de este tipo es
que las aplicaciones que necesitamos combinar pueden encontrarse en distintas
plataformas, cada una ejecutando un sistema operativo distinto. Adems, es
posible que las aplicaciones se hayan creado en diferentes lenguajes de
programacin.
Los servicios Web XML proporcionan un modelo simple, flexible y basado en
estndares para conectar aplicaciones a travs de Internet. Los servicios Web
XML nos permiten aprovechar la infraestructura existente en Internet, y enlazar
aplicaciones, con independencia de las plataformas, lenguajes de programacin
o modelos de objetos que se hayan utilizado para implementarlas.
En esta leccin, estudiaremos la utilidad y el proceso que existe tras invocar un
servicio Web XML desde un formulario Web Form.
En esta leccin, aprenderemos a:
Explicar qu es un servicio Web XML.
Explicar por qu los servicios Web XML son importantes para los
desarrolladores de aplicaciones Web.
Describir cmo encontrar servicios Web XML existentes.
Identificar el proceso de integracin de servicios Web XML en sitios Web.
Introduccin
Objetivos de la leccin
Crear y consumir servicios Web XML 3
Qu es un servicio Web XML?
Lgica programable accesible por protocolos Web
estndares
Permite a las aplicaciones enviar y recibir
informacin a travs de Internet
Independiente de lenguaje, protocolo y plataforma
Arquitectura sin estado
Puede ser asncrono
Basado en un estndar W3C desarrollado
*****************************
Los servicios Web XML se parecen a los componentes en la medida en que
representan una funcionalidad de caja negra que los desarrolladores pueden
utilizar para agregar caractersticas a un formulario Web Form, a aplicaciones
Microsoft Windows o incluso a otro servicio Web XML, sin preocuparse de
cmo est implementado el servicio de soporte.
Los servicios Web XML estn diseados para interactuar directamente con
otras aplicaciones a travs de Internet. En consecuencia, los servicios Web
XML no tienen interfaz de usuario (IU), sino que proporcionan interfaces
definidos por estndares denominados contratos que describen los servicios que
proporcionan.
Un servicio Web XML puede ser utilizado internamente por una sola aplicacin
o externamente por muchas aplicaciones accediendo a l a travs de Internet.
La conexin a un servicio Web XML puede escribirse en cualquier lenguaje
basado en Microsoft .NET. Gracias a esta flexibilidad, no es necesario aprender
un nuevo lenguaje cada vez que deseamos utilizar un servicio Web XML.
A diferencia de las tecnologas de componentes actuales, los servicios Web
XML no utilizan protocolos especficos para determinados modelos de objetos,
como el Modelo de Objetos de Componentes Distribuido (Distributed
Component Object Model, DCOM). Los servicios Web XML se comunican
utilizando protocolos Web y formatos de datos estndares, como HTTP, XML o
SOAP (Simple Object Access Protocol). Los servidores que soporten estos
estndares Web pueden acceder u hospedar servicios Web XML.
Es posible acceder a los servicios Web XML mediante una interfaz estndar, lo
cual permite que sistemas distintos puedan trabajar juntos. Los servidores que
pueden soportar formularios Web Form tambin pueden soportar servicios Web
XML.
Introduccin
Comunicacin
aplicacin a aplicacin a
travs de Internet
Independencia del
lenguaje
Independencia del
protocolo
Independencia de la
plataforma
4 Crear y consumir servicios Web XML
El modelo de servicios Web XML asume una arquitectura de servicios sin
estado. Las arquitecturas sin estado generalmente son ms escalables que las
arquitecturas con estado. Cada respuesta del servicio Web XML es un nuevo
objeto, con un nuevo estado. A menos que los servicios Web XML utilicen los
servicios de gestin de estado de Microsoft ASP.NET para mantener el estado
entre peticiones, el estado de la respuesta se pierde en el servidor del servicio
Web XML.
Los servicios Web XML son asncronos, ya que el objeto que realiza la peticin
en la aplicacin cliente y el objeto de respuesta del servicio Web XML son
sobres SOAP nicos que no requieren una conexin compartida. Las
interacciones entre la aplicacin cliente y el servicio Web XML pueden ser
posteriormente divididas en una peticin y respuesta inicial para invocar el
mtodo del servicio Web XML, y una segunda peticin para recoger los
resultados. Esta comunicacin asncrona permite tanto a la aplicacin que
realiza la peticin como al servicio Web XML la oportunidad de seguir
procesndose mientras la interaccin est en funcionamiento.
Los servicios Web XML estn basados en un estndar del World Wide Web
Consortium (W3C) que sigue evolucionando. De tal modo, las caractersticas
genricas de los servicios Web XML estn fijadas; sin embargo, pueden
agregarse nuevas caractersticas en el futuro.
Para ms informacin sobre el estndar del servicio Web XML del W3C,
ver el sitio Web oficial de W3C en http://www.w3c.org.
Arquitectura sin estado
Asncrono
Basado en W3C
Nota
Crear y consumir servicios Web XML 5
Por qu utilizar los servicios Web XML?
Internet Internet
Servicio Web XML
meteorolgico
Servicio Web XML
meteorolgico
Servicio Web XML
tipo decambio
Servicio Web XML
tipo decambio
Seleccionar destino:
La previsin
meteorolgica es:
El tipo de cambio es:
El billete de avin slo cuesta:
Lluvia Lluvia
Redmond
$1.56
$1,999.98
Base dedatos de
precios debilletes
Base dedatos de
precios debilletes
Servicio Web XML
precio del billete
Servicio Web XML
precio del billete
Sitio de viajes
NorthwindTraders
Sitio de viajes
NorthwindTraders
*****************************
Los servicios Web XML permiten compartir la lgica y las capacidades de
programacin con numerosas aplicaciones Web y aplicaciones Windows, y con
aplicaciones que se ejecutan en otras plataformas. Pensemos en un servicio
Web XML como en un componente que puede exponer sus mtodos a travs de
la Web.
Los servicios Web XML se basan tambin en estndares del W3C. Los
servicios Web XML permiten adems el uso de protocolos Web estndares y
herramientas de soporte que estn disponibles en Visual Studio .NET. Con
Visual Studio .NET, es muy fcil desarrollar y consumir servicios Web XML.
Podemos imaginar un nmero infinito de servicios Web XML que podemos
utilizar para agregar caractersticas a nuestras aplicaciones Web. La siguiente
tabla muestra una lista de algunos de los servicios Web XML que pueden
utilizarse.
Servicio Web XML Caractersticas
Servicios de
autenticacin
Proporciona autenticacin de usuarios.
Por ejemplo, Microsoft Passport.
Informes
meteorolgicos
Proporciona informes meteorolgicos actualizados para
ubicaciones seleccionadas.
Por ejemplo, un sitio Web podra proporcionar previsiones
meteorolgicas locales para una determinada ciudad o rea
consumiendo un servicio Web XML sobre informacin
meteorolgica.
Tipos de cambio Proporciona el tipo de cambio actualizado para todas las
monedas.
Por ejemplo, un sitio Web de viajes podra proporcionar
tipos de cambio para posibles destinos de vacaciones
basndose en perfiles de usuario, consumiendo un servicio
Web XML sobre tipos de cambio.
Introduccin
Agregar servicios Web
XML a aplicaciones Web
6 Crear y consumir servicios Web XML
(continuacin)
Servicio Web XML Caractersticas
Precios de billetes de
avin
Proporciona precios de billetes actualizados de una o varias
lneas areas.
Por ejemplo, un sitio Web de viajes podra ofrecer
automticamente precios con descuento de las principales
lneas areas consumiendo un servicio Web XML sobre los
precios de billetes de avin.
Valores de cotizacin Proporciona valores de cotizacin actualizados.
Por ejemplo, una empresa podra publicar su propio valor de
cotizacin en su sitio Web mediante el consumo de un
servicio Web XML sobre valores burstiles.
Servicios para socios Proporciona a los socios del negocio la oportunidad de
acceder a nuestros servicios en su sitio Web.
Por ejemplo, los sitios Web de convenciones podran ofrecer
servicios de reservas de hotel.
Resumen de noticias Proporciona resmenes de noticias actualizados.
Por ejemplo, una empresa podra publicar titulares de
noticias sobre su mercado de negocio en su sitio Web
consumiendo un servicio Web XML sobre titulares de
noticias.
Seguimiento de pedidos Proporciona el estado de los pedidos vinculando los
sistemas existentes de gestin de recursos empresariales
(enterprise resource management, ERP) a sitios Web
internos y externos.
Por ejemplo, acoplar los resultados de las aplicaciones ERP
internas con los servicios Web XML de seguimiento de
pedidos de proveedores y empresas de transporte dara a los
clientes una visin completa del estado de sus pedidos.
La ilustracin anterior muestra un sitio Web hipottico que ofrece varias
utilidades basadas en servicios Web XML. En este escenario, el usuario
introduce el nombre de una ciudad de destino, y el formulario Web Form utiliza
este nombre como parmetro en las llamadas a varios servicios Web XML.
Desde la perspectiva del usuario, este es un sitio Web con muchas utilidades.
Desde la perspectiva del cdigo, el sitio Web es ms un interfaz grfico que
combina varios servicios Web XML de compaas no relacionadas.
Este sitio Web de una agencia de viajes, al utilizar servicios Web XML,
proporciona mltiples ventajas para el sitio Web consumidor y para los
distintos servicios Web XML:
Ventajas para el sitio Web:
Las aplicaciones a que las que la agencia de viajes tiene acceso no estn
limitadas por los conocimientos de programacin o disponibilidad del
desarrollador de la agencia.
La agencia de viajes no asume el alto coste de mantenimiento de
mantener actualizados datos, como los informes meteorolgicos o los
tipos de cambio.
Ejemplo de servicio Web
XML
Crear y consumir servicios Web XML 7
Los servicios Web XML utilizan Internet; por tanto, la agencia de viajes
no necesita crear ni mantener conexiones dedicadas para ofrecer el
servicio.
Los servicios Web XML son independientes del lenguaje, protocolo y
plataforma; por tanto, los desarrolladores de la agencia de viajes no
necesitan aprender cmo se gener e implant el servicio Web XML
para poder utilizarlo.
El sitio Web puede ser capaz de cobrar a los proveedores del servicio
Web XML por el derecho de ofrecer servicios a la base de clientes del
sitio Web de la agencia de viajes.
Ventajas para los proveedores del servicio Web XML:
Crear las nuevas aplicaciones como servicios Web XML, y actualizar las
aplicaciones existentes utilizando servicios Web XML, proporciona varias
ventajas a los proveedores de servicios:
El proveedor del servicio Web XML puede ser capaz de cobrar al sitio
Web para poder utilizar el servicio.
Al ofrecer una aplicacin, como una calculadora de tipo de cambio,
como un servicio Web XML, un banco puede acceder a la base de
clientes de varias agencias de viajes.
El proveedor del servicio Web XML no debe asumir el alto coste de
desarrollo y de marketing un sitio Web para el pblico que desea viajar.
Debido a que los servicios Web XML utilizan Internet para
comunicarse, los proveedores de los servicios no necesitan costosas
conexiones dedicadas para ofrecer nuestro servicio.
Debido a que los servicios Web XML son independientes del lenguaje,
protocolo y plataforma, el servicio Web XML puede ser consumido por
diversas aplicaciones.
8 Crear y consumir servicios Web XML
Buscar un servicio Web XML
Publicar la URL del servicio Web
XML y su descripcin
.disco
.wsdl
Servicio Web
Proxy Proxy
Web
Form
UDDI
1
1 1 2
2 2
3
3 3
4
4 4
5
5 5
6
6 6
1
1 1
2
2 2
3
3 3
4
4 4
5
5 5
Descubrir el servicio Web XML
Localizar la URL del servicio Web XML
Leer la descripcin .wsdl
Vincular el servicio Web XML al proxy
Invocar el
servicio Web
XML desde el
formulario
Web Form
Mediante el
proxy
6
6 6
*****************************
Podemos encontrar servicios Web XML existentes para agregar a nuestro sitio
Web utilizando uno o ms servicios de descubrimiento. Estos servicios de
descubrimiento estn evolucionando y cambiando rpidamente a medida que el
desarrollo y uso de los servicios Web XML va ganando aceptacin en la
comunidad de Internet.
El proceso de encontrar y vincular a un servicio Web XML es el siguiente:
1. Los desarrolladores de servicios Web XML publican las descripciones y las
ubicaciones de sus servicios Web XML en un sitio Web UDDI (Universal
Description, Discovery, and Integration).
2. Consultamos el sitio Web UDDI para encontrar los servicios Web XML
disponibles que satisfacen nuestros requerimientos. El sitio Web UDDI
proporciona un listado de servicios Web XML que incluyen las URLs
(Uniform Resource Locators) del documento de archivo de descubrimiento
(DISCO) para los servicios Web XML.
3. Seleccionar un servicio Web XML y acceder al documento DISCO para
localizar la URL del servicio Web XML y las URLs relacionadas con el
documento del lenguaje de descripcin de servicios Web (Web Services
Description Language, WSDL).
4. Generar un objeto proxy a partir del documento WSDL.
Una clase proxy es un cdigo que tiene exactamente el mismo aspecto que
la clase que representa; sin embargo, la clase proxy no contiene ninguna
lgica de aplicacin. En lugar de ello, la clase proxy contiene la lgica de
enlace y del transporte. Un objeto proxy permite a un cliente acceder a un
servicio Web XML como si fuera un objeto COM local.
5. Utilizar el objeto proxy para vincular el servicio Web XML.
6. Invocar el servicio Web XML desde el formulario Web Form utilizando el
proxy.
Introduccin
Buscar un servicio Web
XML
Crear y consumir servicios Web XML 9
La especificacin UDDI define un modo de publicar y descubrir informacin
sobre servicios Web XML y las empresas que los suministran.
Las empresas registran individualmente la informacin sobre los servicios Web
XML que exponen para que otras empresas puedan a continuacin utilizarlos.
Una vez que los datos han sido registrados, estn disponibles libremente para
cualquier persona que necesite descubrir cuales son los servicios Web XML
que expone un determinado negocio.
Para ms informacin sobre UDDI, conectarse al sitio Web UDDI en
http://www.uddi.org o al sitio Web de proyectos UDDI de Microsoft en
http://uddi.microsoft.com.
Los archivos de descubrimiento (DISCO) se utilizan para agrupar servicios
comunes en un servidor Web. Los archivos de descubrimiento, .disco y
.vsdisco, son archivos basados en XML que contienen enlaces en forma de
URLs a recursos que proporcionan informacin de descubrimiento para un
servicio Web XML. Estos archivos permiten el descubrimiento programtico de
los servicios Web XML. Los siguientes ejemplos muestran la diferencia entre
los archivos estticos y dinmicos de descubrimiento:
Archivos .disco
Un archivo de descubrimiento esttico (.disco) es un documento XML que
contiene enlaces a otros recursos que describen los servicios Web XML.
Los archivos .disco se generan automticamente para un servicio Web XML
cuando se accede al servicio utilizando una URL con ?DISCO en la cadena
de consulta.
El siguiente cdigo muestra un ejemplo de un archivo .disco:
<?xml version="1.0" ?>
<disco:discovery
xmlns:disco="http://schemas.xmlsoap.org/disco"
xmlns:wsdl="http://schemas.xmlsoap.org/disco/wsdl">
<wsdl:contractRef
ref="http://MyWebServer/UserName.asmx?WSDL"/>
</disco:discovery>
Archivos .vsdisco
Los archivos de descubrimiento dinmicos (.vsdisco) son documentos de
descubrimiento dinmico que Visual Studio .NET genera automticamente
durante la fase de desarrollo de un servicio Web XML.
Un archivo .vsdisco es un archivo basado en XML con un nodo raz
denominado <dynamicDiscovery>. Este nodo puede contener nodos
<exclude>. Cada nodo <exclude>contiene una ruta que el proceso de
descubrimiento dinmico no debera buscar.
Para mantener el control sobre los servicios Web XML que
pueden descubrir los clientes, deberamos utilizar nicamente el
descubrimiento dinmico en los servidores Web de desarrollo.
UDDI
Nota
Archivos DISCO
Precaucin
10 Crear y consumir servicios Web XML
El siguiente cdigo muestra un ejemplo de un archivo .vsdisco:
<?xml version="1.0" encoding="utf-8" ?>
<dynamicDiscovery xmlns="urn:schemas-
dynamicdiscovery:disco.2000-03-17">
<exclude path="_vti_cnf" />
<exclude path="_vti_pvt" />
<exclude path="_vti_log" />
<exclude path="_vti_script" />
<exclude path="_vti_txt" />
<exclude path="Web References" />
</dynamicDiscovery>
Un archivo WSDL define la gramtica XML que se utiliza para la
comunicacin con un servicio Web XML. Visual Studio .NET utiliza el archivo
WSDL para generar objetos proxy y comunicar con un servicio Web XML.
Los archivos WSDL contienen la siguiente informacin sobre un servicio Web
XML:
Dnde encontrar la URL.
Los mtodos y propiedades del servicio Web XML.
Tipos de datos utilizados.
Protocolos de comunicacin.
Para ms informacin sobre los archivos DISCO y WSDL, ver
Descubrimiento de servicios Web XML en la documentacin deVisual
Studio .NET.
Archivos WSDL
Nota
Crear y consumir servicios Web XML 11
Leccin: invocar un servicio Web XML mediante HTTP
Cmo invocar un servicio Web XML mediante HTTP
Prctica: invocar un servicio Web XML mediante
HTTP
*****************************
En esta leccin, estudiaremos cmo acceder a un servicio Web XML
directamente desde un explorador utilizando HTTP Get. Los desarrolladores
utilizan normalmente este proceso, denominado de acceso directo, en tiempo de
diseo para identificar y probar los servicios Web XML. El acceso directo
permite visualizar los mtodos, propiedades y el resultado de un servicio Web
XML en un entorno amigable para el desarrollador.
En esta leccin, aprenderemos a:
Invocar un servicio Web XML con un explorador utilizando acceso directo
al protocolo HTTP-Get.
Identificar los mtodos Web que estn disponibles desde un servicio Web
XML.
Invocar mtodos Web desde un servicio Web XML utilizando acceso
directo al protocolo HTTP-Get, y visualizar la respuesta.
Introduccin
Objetivos de la leccin
12 Crear y consumir servicios Web XML
Cmo invocar un servicio Web XML utilizando HTTP
1. Ir a la URL del servicio Web XML
2. Seleccionar un
mtodo del
servicio
Web XML
3. Invocar el
mtodo del
servicio
Web XML
4. Ver la respuesta
XML
1
1 1
2
2 2
3
3 3
4
4 4
*****************************
Cuando accedemos a un servicio Web XML directamente con un navegador,
accedemos en primer lugar a la pgina de descripcin HTML,
DefaultWsdlHelpGenerator.aspx. Desde esta pgina, podemos seleccionar entre
los mtodos del servicio Web XML disponibles e invocar un mtodo con
parmetros. Recibiremos una respuesta en formato XML.
Tambin podemos utilizar el protocolo HTTP-Post para acceder a un servicio
Web XML. No accederemos a la pgina predeterminada,
DefaultWsdlHelpGenerator.aspx; sin embargo, la respuesta final del servicio
Web XML ser idntica a una peticin HTTP-Get.
Tras haber encontrado un servicio Web XML en UDDI, utilizamos la URL
.asmx para navegar a la pgina de descripcin HTML. Esta pgina de
descripcin proporciona informacin sobre el propsito de un servicio Web
XML, los mtodos Web disponibles que contiene, los parmetros del mtodo
Web, y las respuestas. Adems, podemos utilizar la pgina de descripcin
HTML para probar la funcionalidad del servicio Web XML.
La siguiente ilustracin muestra la vista del navegador con un servicio Web
XML Stocks que se utilizar en las demostraciones de este mdulo.
Introduccin
Navegar hasta la URL
del servicio Web XML
Crear y consumir servicios Web XML 13
Cuando accedemos a la pgina de descripcin HTML de un servicio Web
XML, el navegador muestra los mtodos disponibles del servicio Web XML.
Podemos hacer clic en un mtodo Web para visualizar los parmetros
disponibles para ese mtodo Web.
La siguiente ilustracin muestra la vista del navegador resultante de la seleccin
del mtodo Web GetRating en el servicio Web XML Stocks.
Tambin podemos hacer clic en el enlace Service Description de la parte
superior de la pgina de descripcin HTML para ver el contrato WSDL, que
contiene una descripcin XML del servicio Web XML y su contenido.
Para invocar un mtodo Web, rellenamos el formulario y hacemos clic en
Invoke. El formulario Web Form pasa el nombre del mtodo, los parmetros
requeridos y los valores de los parmetros a la URL del servicio Web XML.
Los servicios Web XML siempre devuelven los datos en formato XML. La
siguiente ilustracin muestra la vista del navegador con el resultado de invocar
el servicio Web XML Stocks con el parmetro Contoso.
Seleccionar un mtodo
del servicio Web XML
Invocar el mtodo Web
Ver la respuesta XML
14 Crear y consumir servicios Web XML
Prctica: invocar un servicio Web XML utilizando HTTP
Los estudiantes:
Introducirn la URL de un servicio Web
XML en el equipo del instructor
Seleccionarn el mtodo del servicio Web
XML para invocar
Introducirn valores para los parmetros
Visualizarn el XML devuelto
Tiempo: 5 Minutos
*****************************
En esta prctica, accederemos a un servicio Web XML en el equipo del
instructor y probaremos los tres mtodos Web disponibles.
Acceder a este servicio Web XML
1. Abrir http://EquipoInstructor/Mod13VB/WeatherService.asmx o
http://EquipoInstructor/Mod13CS/WeatherService.asmx en un
navegador.
2. Hacer clic en WeatherByCity.
3. En el campo City, escribir el nombre de una ciudad, como Seattle, de la que
deseemos conocer la prediccin meteorolgica de maana.
4. Hacer clic en Invoke.
Introducir la respuesta XML en las siguientes lneas.
_____________________________________________________________
_____________________________________________________________
5. Invocar de nuevo el mtodo Web WeatherByCity, esta vez pasando otro
nombre de ciudad, como London, como parmetro en el campo City.
Observar la respuesta XML.
Observar tambin que con nombres de ciudades distintos de Seattle, se
recibe una previsin meteorolgica aleatoria de sol, nublado, o lluvia.
Cuando se introduce Seattle en el campo City, siempre se recibe la
previsin meteorolgica de sol.
Introduccin
Invocar el mtodo Web
WeatherByCity
Crear y consumir servicios Web XML 15
6. Regresar a la pgina preliminar
http://EquipoInstructor/Mod13VB/WeatherService.asmx o
http://EquipoInstructor/Mod13CS/WeatherService.asmx.
7. Hacer clic en TemperatureByCity.
8. En el campo City, introducir el nombre de una ciudad de la que se desee
conocer la temperatura actual.
9. Hacer clic en Invoke.
El valor resultado debera ser un valor aleatorio entre 31 y 60 grados
Fahrenheit.
10. Regresar a la pgina preliminar
http://EquipoInstructor/Mod13VB/WeatherService.asmx o
http://EquipoInstructor/Mod13CS/WeatherService.asmx.
11. Hacer clic en TravelAdviceByCity.
12. En el campo City, introducir el nombre de una ciudad, como Seattle, para la
que se desee obtener sugerencias sobre el viaje.
13. Hacer clic en Invoke.
Observar la respuesta XML.
14. Invocar de nuevo el mtodo Web TravelAdviceByCity, esta vez el nombre
de otra ciudad, como London, como parmetro en el campo City.
15. Observar la respuesta XML.
Invocar el mtodo Web
TemperatureByCity
Invocar el mtodo Web
TravelAdviceByCity
16 Crear y consumir servicios Web XML
Leccin: utilizar un proxy para invocar un servicio Web
XML
Utilizar proxiespara invocar servicios Web XML
Cmo utilizar un proxypara invocar un servicio Web
XML
Prctica dirigida por el instructor: utilizar un proxy
para invocar un servicio Web XML
Controlador de errores del servicio Web XML
Demostracin: probar la disponibilidad de un servicio
Web XML
*****************************
Para invocar programticamente un servicio Web XML desde un formulario
Web Form, debemos crear un proxy para controlar la invocacin. En esta
leccin, estudiaremos cmo crear un proxy de referencia Web para un mtodo
de un servicio Web XML, y cmo invocar el mtodo Web desde un formulario
Web Form.
En esta leccin, aprenderemos a:
Explicar el modo en que un proxy invoca un servicio Web XML.
Crear un proxy para invocar un servicio Web XML.
Incorporar el contenido de un servicio Web XML en un sitio Web.
Gestionar los errores de un servicio Web XML.
Probar la disponibilidad de un servicio Web XML.
Introduccin
Objetivos de la leccin
Crear y consumir servicios Web XML 17
Utilizar proxies para invocar servicios Web XML
Parecen idnticos que la clase original, pero no
contienen la lgica de la aplicacin
Utilizan SOAP para interactuar con el servicio Web XML
Se crean desde el archivo NombreServicio.asmx.wsdl
Agregan miembros para gestionar interacciones con el
servicio Web XML o soportar llamadas asncronas
Internet Internet Servicio
Web XML
Servicio
Web XML
Proxy Proxy
Web
Form
SOAP
*****************************
Para invocar un servicio Web XML desde un formulario Web Form, debemos
crear una referencia Web al servicio Web XML en nuestro proyecto de
aplicacin Web. La referencia Web crea el objeto proxy que se utiliza para
comunicar con el servicio Web XML utilizando SOAP.
Una clase proxy es cdigo que parece exactamente igual a la clase que
representa, pero no contiene lgica de aplicacin. En lugar de ello, la clase
proxy contiene la lgica de combinacin y de transporte. Un objeto proxy
permite que un cliente acceda a un servicio Web XML como si fuera un objeto
COM local. El proxy debe estar en el equipo que dispone de la aplicacin Web.
Visual Studio .NET crea automticamente un proxy denominado reference.vb o
reference.cs cuando agregamos una referencia Web a un servicio Web XML.
Cuando creamos la referencia Web, Visual Studio .NET crea el archivo de
referencia, que es el cdigo proxy.
Los proxies y los servicios Web XML interactan utilizando SOAP, que es un
protocolo XML utilizado para intercambiar informacin estructurada y tipada.
Para tener una vista previa de los mensajes SOAP de un servicio Web
XML, acceder al servicio Web XML URL directamente y examinar el cdigo
que muestra la pgina de descripcin HTML.
El proceso de acceder a un servicio Web XML mediante un proxy es el
siguiente:
1. El usuario enva una peticin URL a un formulario Web Form que requiere
una llamada a un servicio Web XML.
2. El formulario Web Form instancia el proxy, que invoca el servicio Web
XML utilizando SOAP.
La siguiente es la peticin SOAP para el mtodo Web GetRating en un
servicio Web XML Stocks y que pasa el argumento Contoso:
Introduccin
Qu es un proxy?
Interactuar con SOAP
Nota
18 Crear y consumir servicios Web XML
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetRating xmlns="http://tempuri.org/">
<Ticker>Contoso</Ticker>
</GetRating>
</soap:Body>
</soap:Envelope>
3. El servicio Web XML enva una respuesta al proxy utilizando SOAP.
La siguiente es la respuesta SOAP del servicio Web XML GetRating:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetRatingResponse xmlns="http://tempuri.org/">
<GetRatingResult>Buy</GetRatingResult>
</GetRatingResponse>
</soap:Body>
</soap:Envelope>
4. El formulario Web Form ASP.NET consume la respuesta del servicio Web
XML.
Visual Studio .NET crea automticamente un proxy cuando seleccionamos
Agregar referencia Web en el men Proyecto e introducimos la URL del
servicio Web XML. El archivo .asmx.wsdl en el servidor del servicio Web
XML se utiliza para identificar los mtodos y parmetros Web disponibles en el
servicio Web XML.
Creado desde el archivo
.asmx.wsdl
Crear y consumir servicios Web XML 19
Cuando creamos un proxy utilizando Visual Studio .NET, hay disponibles
varios mtodos y propiedades que soportan un acceso programtico al servicio
Web XML. Los miembros disponibles para el proxy incluyen:
Miembros creados dentro del proxy
La infraestructura para realizar llamadas asncronas desde un formulario
Web Form a un servicio Web XML est generada en la clase proxy que
Visual Studio .NET crea automticamente cuando agregamos una referencia
Web. Por cada mtodo Web del servicio Web XML, se crea
automticamente un mtodo BeginNombreMtodoWeb y un mtodo
EndNombreMtodoWeb en el proxy:
BeginNombreMtodoWeb
El mtodo Begin se utiliza para iniciar la comunicacin asncrona con el
mtodo NombreMtodoWeb de un servicio Web XML.
EndNombreMtodoWeb
El mtodo End se utiliza para finalizar una comunicacin asncrona con
el mtodo NombreMtodoWeb de un servicio Web XML, y recuperar la
respuesta completa del mtodo del servicio Web XML.
Por ejemplo, crear una referencia Web al servicio Web XML Stocks crea un
proxy con dos mtodos adicionales: BeginGetRating y EndGetRating.
Para ms informacin sobre la invocacin asncrona de un servicio
Web XML, ver Comunicacin con servicios Web XML de modo
asncrona, en la documentacin de Visual Studio .NET.
Miembros heredados deSoapHttpClientProtocol
Un proxy hereda varios mtodos y propiedades de la clase
System.Web.Services.Protocols.SoapHttpClientProtocol que pueden ser
utilizados para gestionar las interacciones con el servicio Web XML.
Algunas de las propiedades del proxy incluyen:
Timeout
La propiedad Timeout indica la cantidad de tiempo, en milisegundos,
que un cliente de un servicio Web XML espera para que se complete la
solicitud de un servicio Web XML sncrono.
Url
La propiedad Url obtiene o establece la URL base del servicio Web
XML que el cliente est solicitando.
Para ms informacin sobre los miembros SoapHttpClientProtocol,
ver SoapHttpClientProtocol (Miembros de), en la documentacin de
Visual Studio .NET.
Agregar miembros para
gestionar las
interacciones con el
servicio Web XML y
soportar llamadas
asncronas
Nota
Note
20 Crear y consumir servicios Web XML
Cmo utilizar un proxy para invocar un servicio Web XML
1. Crear una referencia Web para el servicio Web XML
2. Crear una instancia del servicio Web XML
3. Invocar los mtodos Web del servicio Web XML
4. Generar la aplicacin Web ASP.NET
Sub Button1_Click(s As Object, e As EventArgs)...
Dim ProxyGetStocks As New _
GetStocks.localhost.Service1()
lblResults.Text = _
ProxyGetStocks.GetRating("Contoso")
End Sub
Sub Button1_Click(s As Object, e As EventArgs)...
Dim ProxyGetStocks As New _
GetStocks.localhost.Service1()
lblResults.Text = _
ProxyGetStocks.GetRating("Contoso")
End Sub
1
1 1
2
2 2
3
3 3
4
4 4
Cdigo de ejemplo enC#
*****************************
Para utilizar el servicio Web XML de un formulario Web Form creado en
Visual Studio .NET, debemos identificar antes la URL del servicio Web XML,
y crear una referencia Web.
Crear un proxy para invocar un servicio Web XML en un formulario
Web Form
1. Abrir la aplicacin Web y el formulario Web Form desde el que
invocaremos el servicio Web XML, y crear una referencia Web para el
servicio Web XML:
a. En el men Proyecto, hacer clic en Agregar referencia Web.
b. En el campo Direccin del cuadro de dilogo Agregar referencia Web,
escribir la URL del servicio Web XML al que se est accediendo, pulsar
ENTER, y hacer clic en Agregar referencia.
Visual Studio .NET crea una referencia Web al servicio Web XML, con
el nombre del servidor que hospeda el servicio Web XML.
Por ejemplo, si creamos una referencia Web a
http://localhost/Stocks/Service1.asmx, de forma predeterminada Visual
Studio .NET pondr el nombre localhost a la referencia Web.
Visual Studio .NET est optimizado para los servicios Web XML
creados por Visual Studio .NET. Es posible que ASP.NET no lea los
archivos .wsdl creados con otros programas, si los archivos incluyen
cadenas terminadas nulas.
Introduccin
Nota
Crear y consumir servicios Web XML 21
2. En un procedimiento de evento del formulario Web Form, crear una
instancia del proxy del servicio Web XML.
Por ejemplo, si un botn invoca el mtodo GetRating del servicio Web
XML Stocks, utilizar el siguiente cdigo en el procedimiento de evento
Click GetStocks.localhost.Service1:
Dim ProxyGetStocks As New GetStocks.localhost.Service1()
GetStocks.localhost.Service1 ProxyGetStocks =
new GetStocks.localhost.Service1();
GetStocks es el nombre de la aplicacin Web, localhost es el nombre de la
referencia Web, y Service1 el nombre del servicio Web.
3. Invocar los mtodos Web del servicio Web XML:
Label1.Text = ProxyGetStocks.GetRating("Contoso")
Label1.Text = ProxyGetStocks.GetRating("Contoso");
El cdigo completo en un procedimiento de evento button_Click sera
similar al siguiente:
Sub Button1_Click(s As Object, e As EventArgs) _
Handles Button1.Click
Dim ProxyGetStocks As New _
GetStocks.localhost.Service1()
lblResults.Text = ProxyGetStocks.GetRating("Contoso")
End Sub
private void Button1_Click(object sender,
System.EventArgs e)
{
GetStocks.localhost.Service1 ProxyGetStocks = new
GetStocks.localhost.Service1();
lblResults.Text = ProxyGetStocks.GetRating("Contoso");
}
4. Generar el proyecto de aplicacin Web ASP.NET.
Compilar la aplicacin Web haciendo clic en Generar en el men Generar.
Visual Basic .NET
C#
Visual Basic .NET
C#
Visual Basic .NET
C#
22 Crear y consumir servicios Web XML
Prctica dirigida por el instructor: utilizar un proxy para invocar un
servicio Web XML
Crear un nuevo proyecto de aplicacin Web
ASP.NET
Crear un proxy para un servicio Web XML
Probar con un navegador
Visualizar el archivo reference.vb o
reference.cs
*****************************
En esta prctica, utilizaremos un proxy para invocar un servicio Web XML.
Ejecutar la prctica dirigida por el instructor
1. Crear un nuevo proyecto de aplicacin Web ASP.NET denominado
GetWeatherVB o GetWeatherCS en Visual Studio .NET.
2. Agregar una referencia Web al servicio Web XML ubicado en
http://localhost/Mod13VB/WeatherService.asmx o
http://localhost/Mod13CS/WeatherService.asmx.
La referencia Web que estamos agregando crear un proxy y una nueva
referencia Web denominada localhost en el Explorador de soluciones.
Observar que el proxy se crea en el lenguaje de nuestro proyecto. Por
ejemplo, si se est utilizando Microsoft Visual Basic, el proxy se crear en
Visual Basic.
3. En el Explorador de soluciones, visualizar los archivos creados
automticamente por Visual Studio .NET.
4. Cambiar el nombre de la referencia Web en el Explorador de soluciones por
WeatherWebRef.
5. Abrir la pgina predeterminada Webform1.aspx en vista de Diseo y
agregar un control Text Box, un control Button y un control Label al
formulario Web Form. Conservar las propiedades predeterminadas de cada
control.
Introduccin
Crear un nuevo proyecto
Crear un proxy
Crear y consumir servicios Web XML 23
6. Crear un procedimiento de evento Click para el botn Button1 y agregar el
siguiente cdigo:
Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim ProxyGetWeather As New _
GetWeatherVB.WeatherWebRef.WeatherService()
Label1.Text = _
ProxyGetWeather.WeatherByCity(TextBox1.Text)
End Sub
private void Button1_Click(object sender,
System.EventArgs e)
{
GetWeatherCS.WeatherWebRef.WeatherService
ProxyGetWeather = new
GetWeatherCS.WeatherWebRef.WeatherService();
Label1.Text =
ProxyGetWeather.WeatherByCity(TextBox1.Text);
}
7. Generar y examinar Webform1.aspx.
8. Para probar el servicio Web XML, escribir Seattle en el cuadro de texto y
hacer clic en el botn. A continuacin, escribir en el cuadro de texto el
nombre de otra ciudad, como London, y hacer clic de nuevo en el botn.
Si se introduce Seattle la previsin meteorolgica ser sol.
Si se introduce el nombre de otra ciudad, el resultado de la previsin
meteorolgica ser aleatorio: sol, nublado o lluvia.
9. Visualizar el archivo reference.vb o reference.cs. El archivo Reference.vb o
Reference.cs puede encontrarse haciendo clic en Mostrar todos los
archivos en el Explorador de soluciones y expandiendo Referencias Web,
WeatherWebRef, y Reference map.
Observar que el archivo de referencia es el cdigo fuente del proxy que
Visual Studio .NET ha generado automticamente. El proxy tiene mtodos
Begin y End para la invocacin asncrona de cada mtodo Web del servicio
Web XML.
Visual Basic .NET
C#
Probar con un
explorador
Visualizar el archivo de
referencia
24 Crear y consumir servicios Web XML
Control de errores del servicio Web XML
Servicio no disponible
Excepciones SOAP de servicios Web XML
GetStocks.StockWebRef.Service1 ProxyGetStocks = new
GetStocks.StockWebRef.Service1();
ProxyGetStocks.Timeout = 10000;
try
{
lblMessage.Text =
ProxyGetStocks.GetRating(TextBox1.Text);
}
catch (Exception err)
{
lblMessage.Text = err.Message;
}
GetStocks.StockWebRef.Service1 ProxyGetStocks = new
GetStocks.StockWebRef.Service1();
ProxyGetStocks.Timeout = 10000;
try
{
lblMessage.Text =
ProxyGetStocks.GetRating(TextBox1.Text);
}
catch (Exception err)
{
lblMessage.Text = err.Message;
}
Cdigo de ejemplo en Visual Basic .NET
*****************************
Existen tres fuentes principales de errores cuando se utiliza un servicio Web
XML: servicio no disponible, largos retrasos de respuesta y errores internos del
servicio Web XML, produciendo mensajes de error del servicio en forma de
excepciones SOAP. Nuestro formulario Web Form necesita ser capaz de
identificar y gestionar los tres tipos de errores.
Para probar la disponibilidad de un servicio Web XML desde un formulario
Web Form ASP.NET, debemos establecer un tiempo de espera para el proxy
del servicio Web XML. Debemos utilizar una instruccin
TryCatchFinally para gestionar la excepcin del tiempo de espera:
Establecer el parmetro del tiempo de espera en el proxy
Establecer la propiedad Timeout del proxy del servicio Web XML a un
valor en milisegundos, como muestra el siguiente cdigo:
ProxyName.Timeout = valor en milisegundos
Controlar las excepciones del tiempo de espera
El siguiente cdigo invoca el servicio Web XML, captura cualquier
excepcin y muestra un mensaje de error en Label1:
Try
'call the XML Web service
Catch err As Exception
Label1.Text = err.Message
End Try
Introduccin
Servicio Web XML no
disponible
Visual Basic .NET
Crear y consumir servicios Web XML 25
try
{
//call the XML Web service
}
catch (Exception err)
{
Label1.Text = err.Message;
}
Si un servicio Web XML no puede procesar una peticin, puede devolver un
mensaje de error utilizando una instancia del objeto SoapException de la clase
System.Web.Services. Para controlar estas excepciones, necesitamos utilizar
una instruccin TryCatchFinally.
El siguiente cdigo captura la excepcin y muestra un mensaje de error en
Label1:
Try
'call your XML Web service
Catch err As SoapException
Label1.Text = "Unable to process your request"
End Try
try
{
//call your XML Web service
}
catch (SoapException err)
{
Label1.Text = "Unable to process your request";
}
C#
Excepciones SOAP de
servicios Web XML
Visual Basic .NET
C#
26 Crear y consumir servicios Web XML
Demostracin: probar la disponibilidad de un servicio Web XML
Establecer una instruccin TryCatch para
elcontrol de errores del tiempo de espera
Ralentizar el servicio Web
Evaluar la excepcin
*****************************
En esta demostracin, estudiaremos cmo probar si el servicio Web XML est
disponible.
Ejecutar la demostracin
1. Volver a abrir el proyecto GetWeather de la prctica anterior.
2. Establecer el tiempo de espera de trycatch
3. Modificar el cdigo del controlador de evento del botn para establecer un
tiempo de espera de 10 segundos (10.000) y agregar cdigo al controlador
de evento del botn para aadir una instruccin trycatch sobre la llamada
al servicio Web XML.
El cdigo debera ser similar al siguiente:
Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim ProxyGetWeather As New _
GetWeatherVB.WeatherWebRef.WeatherService()
ProxyGetWeather.Timeout = 10000
Try
Label1.Text = _
ProxyGetWeather.WeatherByCity(TextBox1.Text)
Catch err As Exception
Label1.Text = err.Message
End Try
End Sub
Introduccin
Visual Basic .NET
Crear y consumir servicios Web XML 27
private void Button1_Click(object sender,
System.EventArgs e)
{
GetWeatherCS.WeatherWebRef.WeatherService
ProxyGetWeather = new
GetWeatherCS.WeatherWebRef.WeatherService();
ProxyGetWeather.Timeout = 10000;
try
{
Label1.Text =
ProxyGetWeather.WeatherByCity(TextBox1.Text);
}
catch (Exception err)
{
Label1.Text = err.Message;
}
}
4. Generar y examinar WebForm1.aspx.
5. Probar el servicio Web XML introduciendo Seattle en el cuadro de texto y
haciendo clic en el botn para verificar que la aplicacin sigue funcionando
como antes.
6. Abrir el proyecto Mod13 de la solucin 2310Demos que contiene el
servicio Web XML.
7. En la parte superior de la pgina WeatherService.asmx.vb o
WeatherService.asmx.cs, agregar la siguiente instruccin de importacin:
Imports System.Threading
using System.Threading;
8. En la parte inicial del mtodo Web WeatherByCity, agregar el siguiente
cdigo para retrasar la respuesta a 40 segundos:
Thread.Sleep(40000)
Thread.Sleep(40000);
Este cdigo har que el servicio Web XML funcione muy despacio para
simular un servicio Web XML que no est en lnea o que opera con mucha
lentitud.
9. Generar la aplicacin Web haciendo clic con el botn derecho Mod13VB o
Mod13CS en el Explorador de soluciones, y hacer clic en Generar.
10. En el proyecto GetWeather, visualizar la pgina WebForm1.aspx en el
navegador.
11. Para probar el servicio Web XML, escribir Seattle en el cuadro de texto y
hacer clic en el botn.
Transcurridos 10 segundos, debera aparecer el mensaje en la etiqueta The
operation has timed-out.
C#
Ralentizar el servicio
Web XML
Visual Basic .NET
C#
Visual Basic .NET
C#
Probar la excepcin
28 Crear y consumir servicios Web XML
Leccin: crear un servicio Web XML
Cmo crear un servicio Web XML
Cdigo del servicio Web XML
Prctica dirigida por el instructor: crear un servicio
Web XML
*****************************
Visual Studio .NET proporciona plantillas que facilitan el desarrollo de los
servicios Web XML. En esta leccin, estudiaremos cmo utilizar estas
plantillas para crear un servicio Web XML.
En esta leccin, aprenderemos a:
Crear un servicio Web XML utilizando Visual Studio .NET.
Describir las clases y las estructuras que se utilizan en un proyecto de un
servicio Web XML generado mediante ASP.NET.
Explicar el cdigo generado cuando se crea un nuevo proyecto de servicio
Web XML utilizando ASP.NET.
Introduccin
Objetivos de la leccin
Crear y consumir servicios Web XML 29
Cmo crear un servicio Web XML
1. Crear un nuevo proyecto de servicio Web
XML en Visual Studio .NET
2. Declarar las funciones WebMethod
3. Generar el proyecto de servicio Web XML
4. Probar
con un
navegador
1
1 1
2
2 2
3
3 3
4
4 4
*****************************
Visual Studio .NET proporciona plantillas y un mtodo de servicio Web XML
predeterminado que nos sirven de ayuda para iniciar la creacin de servicios
Web XML.
Crear un servicio Web XML en Visual Studio .NET
1. Abrir Visual Studio .NET, y crear un nuevo proyecto de servicio Web
ASP.NET.
Visual Studio .NET crear automticamente las carpetas necesarias, y la
pgina del servicio Web XML. Se recomienda cambiar el nombre del
proyecto y del servicio Web XML como ayuda para identificar y mantener
el proyecto y los archivos.
2. Declarar las funciones que se invocarn a travs del Web.
Visual Studio .NET crea una funcin predeterminada Hello World en la
pgina del servicio Web XML. La funcin puede activarse eliminando las
etiquetas de comentario.
Casi cualquier tipo de funcin puede ser escrita como una funcin de
mtodos de un servicio Web XML, desde un sencillo clculo local a una
compleja consulta a una base de datos.
3. Generar el proyecto del servicio Web ASP.NET.
Una vez escritas las funciones, se debe generar el servicio Web para poder
probar la lgica. Al igual que los formularios Web Forms, ASP.NET
compila el servicio Web XML en Microsoft Intermediate Language (MSIL)
para su posterior ejecucin.
Introduccin
30 Crear y consumir servicios Web XML
4. Probar con un navegador.
Para verificar que las funciones funcionan correctamente, pueden probarse
accediendo al servicio Web XML directamente con un navegador. Para ello,
en Visual Studio .NET, hacer clic con el botn derecho en Servicio Web
XML en el Explorador de soluciones y clic en Ver en el navegador.
Tambin puede probarse el servicio Web XML con un navegador remoto,
desde Visual Studio .NET, haciendo clic con el botn derecho en Servicio
Web XML en el Explorador de soluciones y clic en Examinar con, o
abriendo el navegador e introduciendo la URL del servicio Web:
http://NombreServidor/WebService1/Service1.asmx
Crear y consumir servicios Web XML 31
Cdigo del servicio Web XML
Pgina .asmx
Pgina .asmx.vb
<%@ WebService Language="vb"
Codebehind="Service1.asmx.vb"
Class="XMLWebServiceName.Service1" %>
<%@ WebService Language="vb"
Codebehind="Service1.asmx.vb"
Class="XMLWebServiceName.Service1" %>
Imports System
Imports System.Web.Services
Class Service1
<WebMethod()> Public Function function1() As type
'function_here
End Function
End Class
Imports System
Imports System.Web.Services
Class Service1
<WebMethod()> Public Function function1() As type
'function_here
End Function
End Class
Cdigo de ejemplo en C#
*****************************
Cuando creamos un servicio Web XML con Visual Studio .NET, se crean dos
archivos principales que constituyen el servicio Web XML: el archivo .asmx y
el archivo .asmx.vb o .asmx.cs. El archivo .asmx identifica la pgina Web como
un servicio Web XML, y el archivo .asmx.vb o .asmx.cs, tambin denominado
pgina de cdigo subyacente, contiene la lgica del servicio Web XML.
Como un servicio Web XML no tiene ninguna interfaz de usuario, la pgina
.asmx nicamente contiene informacin del tipo de archivo y una directiva a la
pgina de cdigo subyacente.
El cdigo de una pgina .asmx es como sigue:
<%@ WebService Language="vb" Codebehind="Service1.asmx.vb"
Class="XMLWebServiceName.Service1" %>
<%@ WebService Language="c#" Codebehind="Service1.asmx.cs"
Class="XMLWebServiceName.Service1" %>
Las pginas .asmx tienen los siguientes atributos:
@ Web Service
El atributo @ Web Service identifica el archivo como un servicio Web
XML.
Language
El atributo Language define el lenguaje en que est escrito el script de la
pgina Web. Algunos valores de este atributo son: vb, c# y JScript
.
Introduccin
Pgina .asmx
Visual Basic .NET
C#
32 Crear y consumir servicios Web XML
Codebehind
El atributo Codebehind identifica el nombre y la ubicacin de la pgina de
cdigo subyacente .asmx.vb o .asmx.cs que contiene la lgica del servicio
Web XML.
Class
El atributo Class identifica la clase base que soporta esta instancia de un
servicio Web XML.
En el archivo .asmx, debemos definir una clase que encapsule la
funcionalidad del servicio Web XML. Esta clase definida debera ser
pblica, y debera heredarse de la clase base del servicio Web XML.
La clase predeterminada del servicio Web XML es:
Class Service1
class Service1
El archivo de cdigo subyacente es la pgina que contiene la lgica del servicio
Web XML.
El cdigo predeterminado de una pgina de cdigo subyacente es:
Imports System.Web.Services
<WebService(Namespace := "http://tempuri.org/")> _
Public Class Service1
Inherits System.Web.Services.WebService
'<WebMethod()> Public Function HelloWorld() As String
' HelloWorld = "Hello World"
' End Function
End Class
Visual Basic .NET
C#
Pgina de cdigo
subyacente
Visual Basic .NET
Crear y consumir servicios Web XML 33
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
namespace Service1
{
public class Service1 : System.Web.Services.WebService
{
public Service1()
{
//CODEGEN: This call is required by the ASP.NET Web
Services Designer
InitializeComponent();
}
// [WebMethod]
// public string HelloWorld()
// {
// return "Hello World";
// }
}
}
Las pginas de cdigo subyacente tienen los siguientes atributos:
Espacios de nombres
Los servicios Web XML importan los espacios de nombres System y
System.Web.Services:
Imports System
El espacio de nombres ASP.NET System contiene las clases que
soportan las clases ASP.NET generales.
Imports System.Web.Services
El espacio de nombres ASP.NET Web.Services contiene los mtodos y
las clases de propiedades que soportan los servicios Web XML.
C#
Visual Basic .NET
34 Crear y consumir servicios Web XML
Los servicios Web XML importan los espacios de nombres System y
System.Web.Services:
using System
El espacio de nombres ASP.NET System contiene las clases que
soportan las clases ASP.NET generales.
using System.Web.Services
El espacio de nombres ASP.NET Web.Services contiene los mtodos y
clases de propiedades que soportan los servicios Web XML.
using System.Collections
using System.ComponentModel
using System.Data
using System.Diagnostics
using System.Web
Class
El atributo Class identifica la clase base que soporta esta instancia de un
servicio Web XML.
La clase predeterminada del servicio Web XML es Service1.
Mtodos del servicio Web XML
Cada mtodo que se exponga desde el servicio Web XML debe estar
marcado con un atributo <WebMethod()> personalizado. Este atributo se
requiere para crear un mtodo que pueda ser invocado a travs del Web. Si
el mtodo no tiene el atributo personalizado <WebMethod()>, el mtodo no
ser expuesto desde el servicio Web XML.
Visual Studio .NET crea un mtodo Web "Hello World" predeterminado,
que puede activarse eliminando las etiquetas comentadas en la pgina del
servicio Web XML. Podemos modificar la funcin predeterminada, o
agregar nuestras propias funciones.
El siguiente cdigo es el mtodo predeterminado del servicio Web XML de
Visual Studio .NET:
<WebMethod()> Public Function HelloWorld() As String
HelloWorld = "Hello World"
End Function
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
C#
Visual Basic .NET
C#
Crear y consumir servicios Web XML 35
Prctica dirigida por el instructor: crear un servicio Web XML
Crear un servicio Web XML
Probar el servicio Web XML
Cambiar el espacio de nombres
*****************************
En esta prctica, crearemos un sencillo servicio de recomendaciones de valores
de mercado. Este servicio de recomendaciones devuelve un valor Buy si se
introduce el nombre de la compaa Contoso como parmetro de entrada. El
resto de nombres de compaas deberan devolver un valor Sell.
Ejecutar esta prctica
1. Crear un nuevo proyecto de servicio Web ASP.NET en Visual Studio .NET
y especificar la ubicacin del servicio Web en
http://localhost/StocksVB
http://localhost/StockCS.
Automticamente se crea una carpeta StocksVB o StocksCS en la carpeta
\Inetpub\wwwroot.
2. Abrir el archivo predeterminado .asmx, Service1.asmx, en vista de Cdigo
haciendo clic con el botn derecho sobre el archivo en el Explorador de
soluciones y clic en Ver cdigo.
Observar que el nombre predeterminado de la clase es Service1, y que
Visual Studio .NET ha abierto automticamente el archivo de cdigo
subyacente Sevice1.asmx.vb o Sevice1.asmx.cs.
Introduccin
Crear un servicio Web
XML
Visual Basic .NET
C#
36 Crear y consumir servicios Web XML
3. Crear una funcin GetRating como sigue:
<WebMethod()> Public Function GetRating( _
ByVal Ticker As String) As String
If Ticker ="Contoso" Then
Return "Buy"
Else
Return "Sell"
End If
End Function
[WebMethod]
public string GetRating(String Ticker)
{
if (Ticker == "Contoso")
return "Buy";
else
return "Sell";
}
4. Guardar el archivo.
5. Generar y examinar el servicio Web XML en Microsoft Internet Explorer
visualizando
http://localhost/StocksVB/Service1.asmx.
http://localhost/StocksCS/Service1.asmx.
Para abrir el servicio Web XML, tambin puede hacerse clic con el botn
derecho en Service1.asmx en el Explorador de soluciones y clic en Ver en
el navegador.
Observar que hay un comentario sobre el espacio de nombres.
6. Hacer clic en GetRating.
7. Escribir el nombre de una empresa para la que deseemos una
recomendacin de una cotizacin, como Contoso o Northwind Traders, en
el campo Ticker, y hacer clic en Invoke.
Para evitar que aparezca el comentario sobre el espacio de nombres cuando
se examina el servicio Web XML, debe cambiarse la URL del espacio de
nombres. Si se est utilizando Visual Basic .NET, cambiar la URL
predeterminada que proporciona Visual Studio .NET. Si se est utilizando
C#, Visual Studio .NET no genera un espacio de nombres predeterminado.
Debemos agregar un atributo WebService y agregarle la directiva del
espacio de nombres.
8. Agregar o modificar el atributo WebService.
Modificar la directiva del espacio de nombres en Sevice1.asmx.vb para que
utilice http://microsoft.com/webservices/:
<WebService(Namespace:= _
"http://microsoft.com/webservices/")> _
Agregar el atributo WebService y la directiva del espacio de nombres
debajo de la informacin de resumen en Service1.asmx.cs.
El cdigo C#debera ser como el siguiente (con el cdigo nuevo que debe
aadirse en negrita):
Visual Basic .NET
C#
Probar el servicio Web
XML
Visual Basic .NET
C#
Cambiar o agregar el
espacio de nombres
Visual Basic .NET
C#
Crear y consumir servicios Web XML 37
/// Summary description for WeatherService
/// </summary>
///
[WebService(Namespace="http://microsoft.com/webservices/")]
public class Service1 : System.Web.Services.WebService
9. Guardar y volver a generar el archivo.
10. Examinar el servicio Web en Internet Explorer visualizando
http://localhost/StocksVB/Service1.asmx.
http://localhost/StocksCS/Service1.asmx.
Observar que desaparece el comentario sobre el espacio de nombres.
11. Agregar una descripcin para Class. El cdigo debera ser similar al
siguiente:
<WebService(Namespace:= _
"http://microsoft.com/webservices/", _
Description:="My class description...")> _
[WebService(Namespace=
"http://microsoft.com/webservices/",
Description="My class description...")]
12. Agregar una descripcin a la directivaWebMethod. El cdigo debera ser
similar al siguiente:
<WebMethod(Description:="My WebMethod description...")>
[WebMethod(Description="My WebMethod description...")]
13. Guardar y volver a generar el archivo.
14. Examinar el servicio Web en Internet Explorer en
http://localhost/StocksVB/Service1.asmx.
http://localhost/StocksCS/Service1.asmx.
Verificar que aparecen las descripciones.
Visual Basic .NET
C#
Agregar una descripcin
para la clase y el mtodo
Web
Visual Basic .NET
C#
Visual Basic .NET
C#
Visual Basic .NET
C#
Prctica A: Crear y consumir servicios Web XML
Medical
Medical.aspx
Medical
Medical.aspx
Benefits
Home Page
Default.aspx
Benefits
Home Page
Default.aspx
Life Insurance
Life.aspx
Life Insurance
Life.aspx
Retirement
Retirement.aspx
Retirement
Retirement.aspx
Dental
Dental.aspx
Dental
Dental.aspx
Dentists
Doctors
Doctors.aspx
Doctors
Doctors.aspx
Doctors
Logon Page
Login.aspx
Logon Page
Login.aspx
Registration
Register.aspx
Registration
Register.aspx
Coho
Winery
Prospectus
Prospectus.aspx
Prospectus
Prospectus.aspx
XML Web
Service
dentalService1.asmx
XML Web
Service
dentalService1.asmx
Page Header
Header.ascx
Page Header
Header.ascx
ASPState
tempdb
LabWeb
Application
User Control
namedate.ascx
User Control
namedate.ascx
Menu
Component
Class1.vb or Class1.cs
Menu
Component
Class1.vb or Class1.cs
XML
Files
Web.
config
*****************************
En este laboratorio, aprenderemos a:
Crear un servicio Web XML que devuelva tipos de datos complejos.
Probar un servicio Web XML utilizando un explorador.
Para trabajar en este laboratorio, es necesario tener:
Conocimientos sobre cmo agregar una tabla Microsoft SQL Server
a un
proyecto.
Conocimientos sobre Microsoft ADO.NET.
Conocimientos sobre cmo agregar una referencia Web a un formulario Web
Form.
Conocimientos sobre cmo utilizar un DataGrid.
Conocimientos sobre cmo crear procedimientos de evento para controles de
servidor.
Coho Winery ofrece varios beneficios a sus empleados. En los laboratorios de este
curso, crearemos un sitio Web que permita a los empleados seleccionar y
configurar los beneficios que elijan.
En este laboratorio:
Crearemos un servicio Web XML que nos permita recuperar la lista de todos
los dentistas utilizados por Coho Winery.
Recuperar la lista de dentistas de un determinado cdigo postal.
Consumir el servicio Web de la pgina dental.aspx.
Objetivos
Requisitos previos
Escenario
Tiempo estimado para
completar el laboratorio:
60 minutos
Ejercicio 0
Configuracin del laboratorio
Para realizar este laboratorio, es necesario haber creado el proyecto de la
aplicacin Web Benefits y el proyecto de la biblioteca de clases BenefitsList.
Estos proyectos pueden haberse creado utilizando Visual Basic .NET o Microsoft
Visual C#
.NET.
Si no se han creado estos proyectos, realizar los siguientes pasos:
Crear la solucin LabApplication
Realizar este procedimiento nicamente si no se ha creado un archivo
de solucin LabApplication.
1. Utilizando Visual Studio .NET, crear una nueva solucin en blanco
denominada LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Solucin en
blanco.
b. En el cuadro de dilogo Nuevo proyecto, escribir LabApplication en el
cuadro de texto Nombre y hacer clic en Aceptar.
Crear el proyecto Benefits
Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto Benefits, o si se ha eliminado.
1. Crear un nuevo proyecto de aplicacin Web ASP.NET, denominado
BenefitsVB o BenefitsCS, en la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual Basic o Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Aplicacin Web ASP.NET, establecer
la ubicacin en http://localhost/BenefitsVB para el proyecto
Visual Basic .NET o en http://localhost/BenefitsCS para el proyecto
Visual C#.
d. Hacer clic en Agregar a Solucin, y hacer clic en Aceptar.
Cuando se agregan proyectos a la solucin, es importante el uso
de maysculas en el nombre del proyecto. Probablemente, utilizaremos algunos
formularios Web Forms ya generados en ste y en otros laboratorios, por ello,
debemos verificar que hemos escrito con maysculas el nombre del proyecto
Benefits.
Importante
Importante
Precaucin
Actualizar el proyecto Benefits
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en BenefitsVB
o BenefitsCS, seleccionar Agregar y hacer clic en Agregar elemento
existente.
3. Buscar los archivos de proyecto:
Ir a la carpeta VB\Starter\BenefitsVB.
Ir a la carpeta Starter\BenefitsCS.
Estas carpetas pueden encontrarse dentro del fichero labs11.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente Benefits, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de si sobrescribir o recargar los archivos.
Crear la biblioteca de clases BenefitsList
Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto BenefitsList, o si se ha eliminado el proyecto
BenefitsList siguiendo los pasos del Apndice A, Recuperacin del laboratorio.
1. Crear un nuevo proyecto de biblioteca de clases
Crear un nuevo proyecto de biblioteca de clases Visual Basic .NET con el
nombre BenefitsListVB, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual Basic.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListVB.
d. Hacer clic en Agregar a solucin, y clic en Aceptar.
Crear un nuevo proyecto de biblioteca de clases Visual C#.NET con el nombre
BenefitsListCS, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListCS.
a. Hacer clic en Agregar a solucin, y clic en Aceptar.
Verificar que se han escrito correctamente las maysculas del
proyecto BenefitsList.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Importante
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Precaucin
Actualizar el proyecto BenefitsList
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
1. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
2. Ir al proyecto BenefitsList:
Ir a la carpeta VB\Starter\ BenefitsListVB.
Ir a la carpeta CS\Starter\ BenefitsListCS.
Estas carpetas pueden encontrarse dentro del fichero labs11.zip
2. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente BenefitsList, hacer clic en Todos los archivos (*.*).
3. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
3. Hacer clic en S a la pregunta de si sobrescribir o recargar los archivos.
Crear una referencia al componente BenefitsList del proyecto Benefits
1. En el proyecto Benefits de la solucin LabApplication, completar los
siguientes pasos para agregar una referencia al componente BenefitsList que
acabamos de crear:
a. Hacer clic con el botn derecho en el proyecto BenefitsVB o BenefitsCS
en el Explorador de soluciones y hacer clic en Agregar referencia.
b. En el cuadro de dilogo Agregar referencia, en la pestaa Proyectos,
hacer doble clic en el proyecto BenefitsListVB o BenefitsListCS.
c. En la lista Componentes seleccionados, seleccionar el componente
BenefitsListVB o BenefitsListCS, y hacer clic en Aceptar.
El componente se agrega a la carpeta Referencias en el Explorador de
soluciones.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Ejercicio 1
Crear el mtodo GetAllDentists del servicio Web XML Dentist
En este ejercicio, utilizaremos Visual Studio .NET para crear un servicio Web
XML.
Crear un servicio Web XML
1. Utilizando Visual Studio .NET, abrir la solucin LabApplication.
2. Crear un nuevo proyecto de servicio Web ASP.NET, denominado
DentalServiceVB o DentalServiceCS, en la solucin LabApplication:
a. En el men Archivo, hacer clic en Nuevo y clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual Basic o Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Servicio Web ASP.NET. Establecer la
ubicacin en http://localhost/DentalServiceVB para un proyecto de
Visual Basic o en http://localhost/DentalServiceCS para un proyecto de
Visual C#.
d. Hacer clic en Agregar a solucin, y clic en Aceptar.
3. En el Explorador de soluciones, hacer clic con el botn derecho en
Service1.asmx y cambiar el nombre por DentalService1.asmx
4. En el Explorador de soluciones, asegurmonos de que el archivo
DentalService1.asmx est abierto y hacer doble clic en la superficie de diseo
para abrir la pgina de cdigo subyacente.
5. Cambiar el nombre de la clase:
En el archivo DentalService1.asmx.vb, cambiar el nombre de la clase Service1
por DentalService1.
En el archivo DentalService1.asmx.cs, cambiar el nombre de la clase y el
constructor Service1 por DentalService1.
Crear los objetos Connection y DataAdapter
1. En Server Explorer, expandir Servidores, expandir nombreequipo, expandir
Servidores SQL Server, expandir nombreequipo, expandir dentists, y
expandir tablas para ver las tablas de la base de datos dentists.
2. En modo de Diseo, mediante una operacin de arrastrar y soltar, ubicar la
tabla Dentists de la base de datos dentists en la pgina DentalService1.asmx.
Se crea un objeto SqlConnection1 y un objeto SqlDataAdapter1 y se ubican
en la superficie de diseo del servicio Web XML DentalService1.asmx.
Se crea un objeto sqlConnection1 y un objeto sqlDataAdapter1 y se ubican
en la superficie de diseo del servicio Web XML DentalService1.asmx.
Visual Basic .NET
C#
Visual Basic .NET
C#
Crear el DataSet
1. Hacer clic en cualquier lugar de la superficie de diseo para deseleccionar los
objetos SqlConnection1 y SqlDataAdapter1.
2. Hacer clic con el botn derecho en el objeto SqlDataAdapter1 en la pgina
DentalService1.asmx y hacer clic en Generar Dataset.
3. En el cuadro de dilogo Generar Dataset, crear un nuevo DataSet
denominado dsDentists, asegurarse de que est seleccionada la opcin
Agregar este Dataset al diseador, y hacer clic en Aceptar.
Se crea un objeto dsDentists y se ubica en la vista de Diseo de la pgina
DentalService1.asmx, y se agrega un nuevo archivo esquema denominado
dsDentists.xsd al proyecto DentalService en el Explorador de soluciones.
Cuando se cree el DataSet dsDentists, Visual Basic .NET crear una
instancia dsDentists denominada DsDentists1 y Visual C#crear una
instancia dsDentists denominada dsDentists1.
Crear el mtodo de servicio Web XML GetAllDentists
1. En la pgina de cdigo subyacente de la pgina DentalService1.asmx,
DentalService1.asmx.vb o DentalService1.asmx.cs, crear un mtodo del
servicio Web XML denominado GetAllDentists, que devuelve un objeto
DataSet.
2. En el mtodo del servicio Web XML, invocar el mtodo Fill del objeto
SqlDataAdapter1 para rellenar el DataSet, dsDentists1, y retornar el
DataSet.
El cdigo debera ser similar al siguiente:
<WebMethod()> _
Public Function GetAllDentists() As DataSet
SqlDataAdapter1.Fill(DsDentists1)
Return DsDentists1
End Function
[WebMethod()]
public DataSet GetAllDentists()
{
sqlDataAdapter1.Fill(dsDentists1);
return dsDentists1;
}
3. Guardar los cambios.
Nota
Visual Basic .NET
C#
4. Generar y examinar la pgina DentalService1.asmx.
Se muestra la pgina de descripcin del servicio Web XML.
De dnde proviene esta pgina de descripcin?
_____________________________________________________________
_____________________________________________________________
Hay un mensaje de aviso en la parte inferior de la pgina sobre el uso de
tempuri.org. El aviso est aqu porque esta URL temporal es el espacio de
nombres temporal del servicio Web XML y nicamente se utiliza para realizar
las pruebas.
5. En el navegador, hacer clic en el enlace GetAllDentists y clic en Invoke.
El navegador muestra la respuesta XML del servicio Web XML.
Cul es la utilidad del contenido entre las etiquetas <xs:schema>y
</xs:schema>?
_____________________________________________________________
_____________________________________________________________
Modificar el resultado del servicio Web XML
1. En la pgina de cdigo subyacente DentalService1.asmx, establecer los
atributos del servicio Web de acuerdo con la siguiente tabla. Si se est
trabajando en C#, se deber crear el atributo WebService.
Atributo Valor
Namespace http://microsoft.com/webservices/
Description Este servicio Web XML contiene informacin sobre los
dentistas
El cdigo debera ser similar al siguiente:
<WebService( _
Namespace:="http://microsoft.com/webservices/", _
Description:="This XML Web service contains " & _
"information about the dentists.")> _
Public Class DentalService1
Inherits System.Web.Services.WebService
[WebService(Namespace="http://microsoft.com/webservices/",
Description="This XML Web service contains " +
"information about the dentists.")]
public class DentalService1 :
System.Web.Services.WebService
Nota
Visual Basic .NET
C#
2. Agregar un atributo description al mtodo de servicio Web XML
GetAllDentists y establecerlo a This XML Web service method returns all
the dentists.
El cdigo debera ser similar al siguiente:
<WebMethod(Description:= _
"This XML Web service method returns all the dentists")> _
Public Function GetAllDentists() As DataSet
[WebMethod(Description= "This XML Web service method returns
all the dentists")]
public DataSet GetAllDentists()
3. Generar y examinar la pgina DentalService1.asmx.
4. En el navegador, observar que la descripcin del servicio Web XML y que la
descripcin del mtodo de servicio Web XML han cambiado. Adems,
observar que el mensaje de aviso de la parte inferior de la pgina, con
independencia del uso de tempuri.org, ya no aparece debido a que se ha
cambiado el espacio de nombres del servicio.
Probar el servicio Web XML de un compaero
1. En Microsoft Internet Explorer, ir al servicio Web XML DentalService de un
compaero en la siguiente URL, siendo NombreEquipo el nombre del equipo
de otro estudiante:
http://NombreEquipo/DentalServiceVB/DentalService1.asmx o
http://NombreEquipo/DentalServiceCS/DentalService1.asmx
Tambin puede utilizarse el equipo del instructor, denominado London.
2. Invocar el mtodo de servicio Web XML GetAllDentists.
Visual Basic .NET
C#
Nota
Ejercicio 2
Crear el mtodo GetDentistsByPostalCode del servicio Web XML
En este ejercicio, agregaremos otro mtodo al servicio Web XML DentistService.
El nuevo mtodo del servicio Web XML se denomina GetDentistsByPostalCode
y devuelve un DataSet que contiene todos los dentistas en un determinado cdigo
postal. En este ejercicio, escribiremos cdigo utilizado por ADO.NET para invocar
un procedimiento almacenado SQL Server.
Crear el mtodo de servicio Web XML GetDentistsByPostalCode
1. En el archivo DentalService1.asmx.vb o DentalService1.asmx.cs, importar el
espacio de nombres System.Data.SqlClient.
El cdigo debera ser similar al siguiente:
Imports System.Data.SqlClient
using System.Data.SqlClient;
2. Crear un mtodo de servicio Web XML denominado
GetDentistsByPostalCode que tenga un parmetro String pasado por el valor
denominado strPostalCode y que devuelve un DataSet.
3. Establecer la descripcin del mtodo de servicio Web XML a This XML Web
service method returns the dentists from a supplied postal code.
El cdigo debera ser similar al siguiente:
<WebMethod(Description:= _
"This XML Web service method returns the " & _
"dentists from a supplied postal code.")> _
Public Function GetDentistsByPostalCode( _
ByVal strPostalCode As String) As DataSet
End Function
[WebMethod(Description=
"This XML Web service method returns the " +
"dentists from a supplied postal code.")]
public DataSet GetDentistsByPostalCode(
String strPostalCode)
{
}
Visual Basic .NET
C#
Visual Basic .NET
C#
4. En el mtodo GetDentistsByPostalCode del servicio Web XML, agregar
cdigo para rellenar un nuevo DataSet, con los dentistas que se encuentran en
un determinado cdigo postal, invocando el procedimiento almacenado
DentistByPostalCode.
El cdigo debera ser similar al siguiente:
Podemos copiar y pegar este cdigo desde el archivo
VB\Starter\DentalServiceVB\DentistsPoCode.txt, o
CS\Starter\DentalServiceCS\DentistsPoCode.txt. Los dos archivos se pueden
encontrar dentro del fichero labs11.zip
Dim conn As New SqlConnection _
("data source=localhost; " & _
"initial catalog=Dentists; " & _
"integrated security=true")
Dim daDentistsPoCode As SqlDataAdapter
Dim dsDentistsPoCode As New DataSet()
Dim workParam As SqlParameter = Nothing
'call the DentistsByState stored procedure
daDentistsPoCode = _
New SqlDataAdapter("DentistsByPostalCode", conn)
daDentistsPoCode.SelectCommand.CommandType = _
CommandType.StoredProcedure
'add the postal code input parameter
workParam = New SqlParameter("@PostalCode", _
System.Data.SqlDbType.NVarChar)
workParam.Direction = ParameterDirection.Input
workParam.Value = strPostalCode
daDentistsPoCode.SelectCommand.Parameters.Add(workParam)
'run the stored procedure and fill a dataset
daDentistsPoCode.Fill(dsDentistsPoCode, _
"DentistsPoCode")
'close the connection
conn.Close()
Return dsDentistsPoCode
Nota
Visual Basic .NET
SqlConnection conn = new SqlConnection
("data source=localhost;" +
"initial catalog=Dentists;" +
"integrated security=true");
SqlDataAdapter daDentistsPoCode;
DataSet dsDentistsPoCode = new DataSet();
SqlParameter workParam = null;
//call the DentistsByState stored procedure
daDentistsPoCode = new
SqlDataAdapter("DentistsByPostalCode", conn);
daDentistsPoCode.SelectCommand.CommandType =
CommandType.StoredProcedure;
//add the postal code input parameter
workParam = new SqlParameter("@PostalCode",
System.Data.SqlDbType.NVarChar);
workParam.Direction = ParameterDirection.Input;
workParam.Value = strPostalCode;
daDentistsPoCode.SelectCommand.Parameters.Add(workParam);
//run the stored procedure and fill a dataset
daDentistsPoCode.Fill(dsDentistsPoCode, "DentistsPoCode");
//close the connection
conn.Close();
return dsDentistsPoCode;
5. Guardar los cambios.
6. Generar y examinar la pgina DentalService1.asmx.
7. En el navegador, hacer clic en el enlace GetDentistsByPostalCode, escribir
98052 en el campo strPostalCode y hacer clic en Invoke.
Deberamos ver todos los dentistas del cdigo postal 98052. Debera haber seis
dentistas para este cdigo postal.
8. Probar de nuevo el mtodo GetDentistsByPostalCode del servicio Web XML
con el cdigo postal 94111.
Ahora, deberamos ver todos los dentistas del cdigo postal 94111. Debera
haber tres dentistas para este cdigo postal.
9. Probar de nuevo el mtodo GetDentistsByPostalCode del servicio Web XML
con el cdigo postal 02703.
No deberamos ver ningn dentista.
C#
Ejercicio 3
Consumir el mtodo de servicio Web XML GetAllDentists
En este ejercicio, invocaremos el mtodo GetAllDentists del servicio Web XML
DentalService. A continuacin, mostraremos el DataSet resultante en un control
DataGrid.
Consumir el servicio Web XML DentalService
1. Abrir el proyecto BenefitsVB o BenefitsCS de la solucin LabApplication en
Visual Studio .NET.
2. Agregar el formulario Web Form dental.aspx de la carpeta
VB\Starter\BenefitsVB o CS\Starter\BenefitsCS al proyecto BenefitsVB o
BenefitsCS. Estas carpetas se pueden encontrar dentro del fichero labs11.zip.
3. Agregar una referencia Web al servicio Web XML DentalService. El servicio
Web XML debera estar ubicado en
http://localhost/DentalServiceVB/DentalService1.asmx o
http://localhost/DentalServiceCS/DentalService1.asmx
a. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsVB o BenefitsCS, y hacer clic en Agregar referencia Web.
b. En el campo Direccin del cuadro de dilogo Agregar referencia Web,
escribir http://localhost/DentalServiceVB/DentalService1.asmx o
http://localhost/DentalServiceCS/DentalService1.asmx, y pulsar
ENTER.
c. Hacer clic en Agregar referencia.
Automticamente, se crea una nueva carpeta denominada Referencias Web
en el proyecto BenefitsVB o BenefitsCS, dentro del Explorador de
soluciones. La carpeta Referencias Web contiene un proxy y una nueva
referencia Web denominada localhost.
El proxy se crea en el lenguaje predeterminado de las opciones de
configuracin de nuestro proyecto. Por ejemplo, si estamos utilizando
Visual Basic .NET, se crear el proxy en Visual Basic .NET, y su nombre ser
Referencia.vb.
4. Hacer clic en el icono Mostrar todos los archivos del Explorador de
soluciones.
5. En el Explorador de soluciones, cambiar el nombre de la Referencia Web
localhost por DentalWebRef.
6. Expandir Referencias Web, expandir DentalWebRef, y hacer clic en el icono
Reference.map en el Explorador de soluciones.
Nota
7. Abrir el archivo Reference.vb o Reference.cs.
Cul es la utilidad de los mtodos BeginGetAllDentists y
EndGetAllDentists?
_____________________________________________________________
_____________________________________________________________
8. Cerrar Reference.vb o Reference.cs.
Invocar el mtodo GetAllDentists del servicio Web XML
1. Abrir el formulario Web Form dental.aspx.
La pgina ya incluye controles TextBox, Button y DataGrid.
2. Abrir la pgina de cdigo subyacente dental.aspx y localizar el siguiente
comentario en el procedimiento de evento cmdGetAllDentists_Click:
'TODO Lab 13: call the XML Web service method
'GetAllDentists
//TODO Lab 13: call the XML Web service method
//GetAllDentists
3. Escribir el cdigo para consumir el mtodo de servicio Web XML
GetAllDentists:
a. Crear un proxy DentalService denominado ProxyGetAllDentists.
b. Crear un DataSet denominado dsAllDentists.
c. Invocar el mtodo GetAllDentists del servicio Web XML y guardar el
resultado en dsAllDentists.
d. Establecer la fuente de datos del DataGrid dgDentists a dsAllDentists.
e. Generar el DataSet en el DataGrid.
Visual Basic .NET
C#
El cdigo debera ser similar al siguiente:
Dim ProxyGetAllDentists As New _
BenefitsVB.DentalWebRef.DentalService1()
Dim dsAllDentists As New DataSet()
dsAllDentists = _
ProxyGetAllDentists.GetAllDentists()
dgDentists.DataSource = dsAllDentists.Tables(0)
dgDentists.DataBind()
BenefitsCS.DentalWebRef.DentalService1 ProxyGetAllDentists
= new BenefitsCS.DentalWebRef.DentalService1();
DataSet dsAllDentists = new DataSet();
dsAllDentists = ProxyGetAllDentists.GetAllDentists();
dgDentists.DataSource = dsAllDentists.Tables[0];
dgDentists.DataBind();
Si DentalWebRef se muestra como localhost en Microsoft
IntelliSense, debemos cerrar Visual Studio .NET y volver a abrirlo antes de
escribir el cdigo para consumir los mtodos de servicio Web XML de la
Referencia Web.
4. Guardar los cambios.
5. Generar y examinar la pgina dental.aspx.
6. En el navegador, hacer clic en Get All Dentists.
Deberamos ver todos los dentistas en el DataGrid.
Visual Basic .NET
C#
Nota
Ejercicio 4
Consumir el mtodo GetDentistsByPostalCode del servicio Web XML
En este ejercicio, invocaremos el mtodo GetDentistsByPostalCode del servicio
Web XML Dentists.asmx. Utilizaremos un DataGrid para mostrar el DataSet
resultante de los dentistas de un determinado cdigo postal.
Invocar el mtodo GetDentistsByPostalCode del servicio Web XML
1. Abrir la pgina de cdigo subyacente dental.aspx y localizar el siguiente
comentario en el procedimiento de evento cmdSubmit_Click:
'TODO Lab 13: call the XML Web service methods
'GetDentistsByPostalCode
//TODO Lab 13: call the XML Web service methods
//GetDentistsByPostalCode
2. Escribir el cdigo para invocar el mtodo de servicio Web XML
GetDentistsByPostalCode:
a. Crear un proxy denominado ProxyGetDentistsByPostalCode.
b. Crear un DataSet denominado dsDentistsByPostalCode.
c. Invocar el mtodo GetDentistsByPostalCode del servicio Web XML,
pasarle el contenido del cuadro de texto txtPostalCode, y guardar el
DataSet resultante en el DataSet dsDentistsByPostalCode.
d. Establecer el DataSource del DataGrid dgDentists en
dsDentistsByPostalCode.
e. Vincular el DataSet al DataGrid.
El cdigo debera ser similar al siguiente:
Dim ProxyGetDentistsByPostalCode As New _
BenefitsVB.DentalWebRef.DentalService1()
Dim dsDentistsByPostalCode As New DataSet()
dsDentistsByPostalCode = _
ProxyGetDentistsByPostalCode. _
GetDentistsByPostalCode(txtPostalCode.Text)
dgDentists.DataSource = dsDentistsByPostalCode.Tables(0)
dgDentists.DataBind()
BenefitsCS.DentalWebRef.DentalService1
ProxyGetDentistsByPostalCode = new
BenefitsCS.DentalWebRef.DentalService1();
DataSet dsDentistsByPostalCode = new DataSet();
dsDentistsByPostalCode =
ProxyGetDentistsByPostalCode.GetDentistsByPostalCode
(txtPostalCode.Text);
dgDentists.DataSource = dsDentistsByPostalCode.Tables[0];
dgDentists.DataBind();
Visual Basic .NET
C#
Visual Basic .NET
C#
3. Guardar los cambios.
4. Generar y examinar dental.aspx.
5. Escribir 98052 en el cuadro de texto Postal Code, y hacer clic en Submit.
Deberamos ver todos los dentistas del cdigo postal 98052 en el DataGrid.
6. Escribir 94111 en el cuadro de texto Postal Code y hacer clic en Submit.
Veremos todos los dentistas del cdigo postal 94111 en el DataGrid.
THIS PAGE INTENTIONALLY LEFT BLANK
1
Prctica A: Almacenar datos de aplicacin y sesin
Medical
Medical.aspx
Medical
Medical.aspx
Benefits
Home Page
Default.aspx
Benefits
Home Page
Default.aspx
Life Insurance
Life.aspx
Life Insurance
Life.aspx
Retirement
Retirement.aspx
Retirement
Retirement.aspx
Dental
Dental.aspx
Dental
Dental.aspx
Dentists
Doctors
Doctors.aspx
Doctors
Doctors.aspx
Doctors
Logon Page
Login.aspx
Logon Page
Login.aspx
Registration
Register.aspx
Registration
Register.aspx
Coho
Winery
Prospectus
Prospectus.aspx
Prospectus
Prospectus.aspx
XML Web
Service
dentalService1.asmx
XML Web
Service
dentalService1.asmx
Page Header
Header.ascx
Page Header
Header.ascx
ASPState
tempdb
LabWeb
Application
User Control
namedate.ascx
User Control
namedate.ascx
Menu
Component
Class1.vb or Class1.cs
Menu
Component
Class1.vb or Class1.cs
XML
Files
Web.
config
*****************************
En este laboratorio, aprenderemos a:
Crear variables de sesin y de aplicacin y utilizarlas para almacenar y
recuperar informacin.
Crear, leer y escribir desde cookies persistentes.
Almacenar variables de sesin en una base de datos Microsoft SQL
Server
.
Este laboratorio se centra en los conceptos de este mdulo. Por ello,
podra no cumplir las recomendaciones de seguridad de Microsoft.
Para trabajar en este laboratorio, es necesario tener:
Conocimientos sobre cmo crear variables de sesin y de aplicacin.
Conocimientos sobre cmo crear cookies.
Coho Winery ofrece varios beneficios a sus empleados. En los laboratorios de
este curso, crearemos un sitio Web que permita a los empleados seleccionar y
configurar los beneficios que elijan.
En este laboratorio, utilizaremos variables de sesin y de aplicacin para
mejorar la experiencia de los usuarios cuando navegan por el sitio Web
Benefits.
Objetivos
Nota
Requisitos previos
Escenario
Tiempo estimado para
completar el laboratorio:
90 minutos
2
Ejercicio 0
Configuracin del laboratorio
Para realizar este laboratorio, es necesario haber creado el proyecto de la
aplicacin Web Benefits y el proyecto de la biblioteca de clases BenefitsList.
Estos proyectos pueden haberse creado utilizando Visual Basic .NET o
Microsoft Visual C#
.NET.
Si no se han creado estos proyectos, realizar los siguientes pasos:
Crear la solucin LabApplication
Realizar este procedimiento nicamente si no se ha creado un
archivo de solucin LabApplication.
1. Utilizando Visual Studio .NET, crear una nueva solucin en blanco
denominada LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Solucin en
blanco.
b. En el cuadro de dilogo Nuevo proyecto, escribir LabApplication en el
cuadro de texto Nombre y hacer clic en Aceptar.
Crear el proyecto Benefits
Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto Benefits, o si se ha eliminado.
1. Crear un nuevo proyecto de aplicacin Web ASP.NET, denominado
BenefitsVB o BenefitsCS, en la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual Basic o Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Aplicacin Web ASP.NET,
establecer la ubicacin en http://localhost/BenefitsVB para el proyecto
Visual Basic .NET o en http://localhost/BenefitsCS para el proyecto
Visual C#.
d. Hacer clic en Agregar a Solucin, y hacer clic en Aceptar.
Cuando se agregan proyectos a la solucin, es importante el
uso de maysculas en el nombre del proyecto. Probablemente, utilizaremos
algunos formularios Web Forms ya generados en ste y en otros
laboratorios, por ello, debemos verificar que hemos escrito con maysculas
el nombre del proyecto Benefits.
Importante
Importante
Precaucin
3
Actualizar el proyecto Benefits
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
3. Buscar los archivos de proyecto:
Ir a la carpeta VB\Starter\BenefitsVB.
Ir a la carpeta CS\Starter\BenefitsCS.
Estas carpetas pueden encontrarse dentro del fichero labs12.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente Benefits, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de si sobrescribir o recargar los archivos.
Crear la biblioteca de clases BenefitsList
Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto BenefitsList, o si se ha eliminado.
1. Crear un nuevo proyecto de biblioteca de clases.
Crear un nuevo proyecto de biblioteca de clases Visual Basic .NET con el
nombre BenefitsListVB, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual Basic.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListVB.
d. Hacer clic en Agregar a solucin, y clic en Aceptar.
Crear un nuevo proyecto de biblioteca de clases Visual C#.NET con el
nombre BenefitsListCS, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListCS.
a. Hacer clic en Agregar a solucin, y clic en Aceptar.
Verificar que se han escrito correctamente las maysculas del
proyecto BenefitsList.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Importante
Para el proyecto
Visual Basic .NET
Para el proyecto Visual
C#
Precaucin
4
Actualizar el proyecto BenefitsList
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
3. Ir al proyecto BenefitsList.
Ir a la carpeta VB\Starter\BenefitsListVB.
Ir a la carpeta CS\Starter\BenefitsListCS.
Estas carpetas pueden encontrarse dentro del fichero labs12.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente BenefitsList, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
1. Hacer clic en S a la pregunta de si sobrescribir o recargar los archivos.
Crear una referencia al componente BenefitsList del proyecto Benefits
1. En el proyecto Benefits de la solucin LabApplication, completar los
siguientes pasos para agregar una referencia al componente BenefitsList
que acabamos de crear:
a. Hacer clic con el botn derecho en el proyecto BenefitsVB o
BenefitsCS en el Explorador de soluciones y hacer clic en Agregar
referencia.
b. En el cuadro de dilogo Agregar referencia, en la pestaa Proyectos,
hacer doble clic en el proyecto BenefitsListVB o BenefitsListCS.
c. En la lista Componentes seleccionados, seleccionar el componente
BenefitsListVB o BenefitsListCS, y hacer clic en Aceptar.
El componente se agrega a la carpeta Referencias en el Explorador de
soluciones.
Crear el Servicio Web XML Dental
Realizar este procedimiento nicamente si no se ha creado
anteriormente el proyecto DentalService, o si se ha eliminado el proyecto
DentalService siguiendo los pasos del Apndice A Recuperacin del
laboratorio.
1. Crear un nuevo proyecto de Servicio Web XML.
Crear un nuevo proyecto de Servicio Web XML en Visual Basic .NET,
denominado DentalServiceVB, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual Basic.
c. En la lista Plantillas, hacer clic en Servicio Web ASP.NET, y
establecer la ubicacin en http://localhost/DentalServiceVB.
d. Hacer clic en Agregar a solucin, y clic en Aceptar.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Importante
Para el proyecto
Visual Basic .NET
5
Verificar que se han utilizado correctamente las maysculas en
el proyecto DentalServiceVB.
Crear un nuevo proyecto de Servicio Web XML Visual C#, denominado
DentalServiceCS, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual Basic.
c. En la lista Plantillas, hacer clic en Servicio Web ASP.NET, y
establecer la ubicacin en http://localhost/DentalServiceCS.
d. Hacer clic en Agregar a solucin, y clic en Aceptar.
Verificar que se han utilizado correctamente las maysculas en
el proyecto DentalServiceVB.
Actualizar el proyecto DentalService
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
DentalServiceVB o DentalServiceCS, seleccionar Agregar, y hacer clic en
Agregar elemento existente.
3. Buscar los archivos de proyecto:
Ir a la carpeta VB\Starter\DentalServiceVB.
Ir a la carpeta CS\Starter\DentalServiceCS.
Estas carpetas pueden encontrarse dentro del fichero labs12.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente DentalService, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de esta carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de si sobrescribir o recargar los archivos.
7. Generar el servicio Web XML DentalService haciendo clic con el botn
derecho en el proyecto DentalServiceVB o DentalServiceCS en el
Explorador de soluciones y hacer clic en Generar.
Precaucin
Para el proyecto Visual
C#.NET
Precaucin
Para el proyecto
Visual Basic .NET
Para el proyecto Visual
C#.NET
6
Agregar una referencia Web en el proyecto Benefits al servicio Web
DentalService
1. En el proyecto Benefits de la solucin LabApplication, realizar los
siguientes pasos para agregar una referencia Web al servicio Web XML
DentalService:
a. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsVB o BenefitsCS y clic en Agregar referencia Web.
b. En el cuadro de texto Direccin, escribir:
http://localhost/DentalServiceVB/DentalService1.asmx o
http://localhost/DentalServiceCS/DentalService1.asmx y pulsar
ENTER.
Se mostrar la referencia Web DentalService.
c. Hacer clic en Agregar referencia.
La referencia Web se agrega al proyecto en la carpeta Referencias Web.
2. En el Explorador de soluciones, expandir Referencias Web, hacer clic con
el botn derecho en localhost, y seleccionar Cambiar nombre.
3. Escribir DentalWebRef, y pulsar ENTER.
4. Generar la solucin haciendo clic en Generar solucin en el men
Generar.
7
Ejercicio 1
Utilizar variables de sesin
En este ejercicio, almacenaremos el nombre y la fecha de nacimiento del
usuario en variables de sesin. Tanto el control de usuario namedate.ascx como
la pgina life.aspx buscarn las variables de sesin y rellenarn los cuadros de
texto adecuados con la informacin, si est disponible. Si las variables de sesin
no existen todava, una de las pginas las crear.
En la aplicacin Web actual, un usuario debe introducir informacin redundante
en mltiples pginas. Por ejemplo, el usuario debe suministrar su nombre y
fecha de nacimiento en la pgina mdica y en la pgina de seguro de vida. Para
simplificar el uso de la aplicacin Web, utilizaremos una cookie para almacenar
esta informacin en variables de sesin y as el usuario slo deber introducir
esta informacin una nica vez.
Obtener y establecer variables de sesin en life.aspx
1. En Visual Studio .NET, abrir la pgina de cdigo subyacente life.aspx del
proyecto Benefits.
2. Agregar cdigo al procedimiento de evento Page_Load que obtiene las
variables de sesin Name y Birth.
3. Establecer la propiedad Text del cuadro de texto txtName con el contenido
de la variable de sesin Name, y establecer la propiedad Text del cuadro de
texto txtBirth con el contenido de la variable de sesin Birth.
4. El cdigo debera ser similar al siguiente:
If Not (Page.IsPostBack) Then
Dim strName As String = CStr(Session("Name"))
Dim strBirth As String = CStr(Session("Birth"))
txtName.Text = strName
txtBirth.Text = strBirth
End If
if (!Page.IsPostBack)
{
string strName = (string)Session["Name"];
string strBirth = (string)Session["Birth"];
txtName.Text = strName;
txtBirth.Text = strBirth;
}
5. En el procedimiento de evento cmdSave_Click, buscar el siguiente
comentario:
'TODO Lab 14: Set Session variables
//TODO Lab 14: Set Session variables
Si esta seccin de cdigo no se encuentra en nuestro archivo
life.aspx, podemos copiar el cdigo del archivo life.aspx en la carpeta
VB\Starter\BenefitsVB o CS\Starter\BenefitsCS. Estos archivos
pueden encontrarse dentro del fichero labs12.zip
Escenario
Visual Basic .NET
Visual C#
Visual Basic .NET
Visual C#
Nota
8
6. Agregar el cdigo bajo este comentario que asigna el texto del cuadro de
texto txtName a la variable de sesin Name, y asigna el texto del cuadro de
texto txtBirth a la variable de sesin Birth.
7. El cdigo debera ser similar al siguiente:
Session("Name") = txtName.Text
Session("Birth") = txtBirth.Text
Session["Name"] = txtName.Text;
Session["Birth"] = txtBirth.Text;
Obtener y establecer variables de sesin en la pgina de cdigo
subyacente namedate.ascx
1. Abrir namedate.ascx.vb o namedate.ascx.cs.
ste es el control de usuario que muestra el nombre y la fecha de nacimiento
en el formulario Web Form medical.aspx.
2. Agregar cdigo al procedimiento de evento Page_Load que recupera las
variables de sesin Name y Birth.
3. Establecer la propiedad Text para el cuadro de texto txtName con el
contenido de la variable de sesin Name, y establecer la propiedad Text del
cuadro de texto txtBirth con el contenido de la variable de sesin Birth.
4. El cdigo debera ser similar al siguiente:
If Not (Page.IsPostBack) Then
Dim strName As String = CStr(Session("Name"))
Dim strBirth As String = CStr(Session("Birth"))
txtName.Text = strName
txtBirth.Text = strBirth
End If
if (!Page.IsPostBack)
{
string strName = (string)Session["Name"];
string strBirth = (string)Session["Birth"];
txtName.Text = strName;
txtBirth.Text = strBirth;
}
Visual Basic .NET
Visual C#
Visual Basic .NET
Visual C#
9
5. En la instruccin Get de la propiedad pblicastrName, agregar una lnea de
cdigo precediendo a la instruccin Return que establezca la variable de
sesin Name con el texto del cuadro de texto txtName.
La instruccin Get debera ser similar a la siguiente:
Get
Session("Name") = txtName.Text
Return txtName.Text
End Get
get
{
Session["Name"] = txtName.Text;
return txtName.Text;
}
6. En la instruccin Get de la propiedad pblicadtDate, agregar una lnea de
cdigo precediendo a la instruccin Return que establezca la variable de
sesin Birth con el texto del cuadro de texto txtBirth.
La instruccin Get debera ser similar a la siguiente:
Get
Session("Birth") = txtBirth.Text
Return CDate(txtBirth.Text)
End Get
get
{
Session["Birth"] = txtBirth.Text;
return Convert.ToDateTime(txtBirth.Text);
}
Evaluar el cdigo
1. Generar y examinar life.aspx.
2. En el navegador, escribir nuestro nombre en el cuadro de texto Name,
escribir nuestra fecha de nacimiento en el cuadro de texto Birthdate, y
escribir 400 en el cuadro de texto Coverage.
3. Hacer clic en Save.
4. En la parte superior del formulario Web Form life.aspx, hacer clic en el
enlace a Medical.
En el formulario Web Form medical.aspx, aparecen nuestro nombre y fecha
de nacimiento. Estos valores se han obtenido de las variables de sesin.
5. Cambiar nuestro nombre en el cuadro de texto, y hacer clic en Save.
6. Hacer clic en el enlace a Life Insurance y comprobar que nuestro nombre
ha cambiado en el formulario Web Form life.aspx.
Visual Basic .NET
Visual C#
Visual Basic .NET
Visual C#
10
Ejercicio 2
Utilizar cookies
En este ejercicio, utilizaremos cookies para almacenar todas las selecciones de
beneficios que haga el usuario. Cuando el usuario regrese a la pgina
default.aspx, sus selecciones aparecern en la pgina.
Antes de que el usuario finalice el proceso de seleccin de beneficios, debera
poder ver estas selecciones en una sola pgina. Hemos escogido ver una lista de
los beneficios seleccionados en la pgina default.aspx. Mostraremos todos los
beneficios seleccionados en la pgina default.aspx utilizando una cookie
persistente.
Para ambas pginas, medical.aspx y life.aspx, agregaremos cdigo que lea los
valores existentes de la cookie, los actualice y rescriba la cookie.
Configurar la pgina de inicio
1. Abrir la pgina default.aspx.
2. Agregar dos etiquetas y dos controles de cuadro de texto en la parte inferior
del formulario Web Form, de forma que ste tenga un aspecto similar al de
la siguiente ilustracin.
Escenario
11
3. Poner el nombre txtDoctor al primer cuadro de texto y txtLife al segundo.
4. Abrir default.aspx.vb o default.aspx.cs.
5. En el procedimiento de evento Page_Load, agregar cdigo para leer de una
cookie denominada Benefits. Este cdigo debera aadirse tras la condicin
Page.IsPostBack existente.
6. Declarar dos variables, strDoc y strLife, que almacenarn los valores
doctors y life de la cookieBenefits.
7. Si la cookie existe y no est vaca, establecer la propiedad Text del cuadro
de texto txtDoctors en strDoc, y establecer la propiedad de texto de txtLife
en strLife.
El cdigo debera ser similar al siguiente:
Dim objGetCookie As HttpCookie = _
Request.Cookies("Benefits")
Dim strDoc As String
Dim strLife As String
If Not objGetCookie Is Nothing Then
strDoc = objGetCookie.Values("doctor")
strLife = objGetCookie.Values("life")
txtDoctor.Text = strDoc
txtLife.Text = strLife
End If
HttpCookie objGetCookie =
Request.Cookies["Benefits"];
string strDoc;
string strLife;
if (objGetCookie != null)
{
strDoc = objGetCookie.Values["doctor"];
strLife = objGetCookie.Values["life"];
txtDoctor.Text = strDoc;
txtLife.Text = strLife;
}
8. Guardar default.aspx.
Visual Basic .NET
Visual C#
12
Almacenar la seleccin de doctores
1. Abrir medical.aspx.vb o medical.aspx.cs.
2. En el procedimiento de evento cmdSave_Click, agregar cdigo que
recupere toda la informacin de la cookie Benefits, pero slo si la cookie
existe y contiene informacin.
Este cdigo aadido debera incluir dos variables de tipo cadena que
almacenarn los valores de los doctores y del seguro de vida de la cookie. El
cdigo debera ser similar al siguiente:
Dim objCookie As HttpCookie = Request.Cookies("Benefits")
Dim strDoc As String
Dim strLife As String
If Not objCookie Is Nothing Then
strDoc = objCookie.Values("doctor")
strLife = objCookie.Values("life")
End If
HttpCookie objGetCookie = Request.Cookies["Benefits"];
string strDoc ="";
string strLife ="";
if (objGetCookie != null)
{
strDoc = objGetCookie.Values["doctor"];
strLife = objGetCookie.Values["life"];
}
3. Agregar cdigo para realizar las siguientes tareas:
a. Actualizar el valor de la variable strDoc con el texto que contiene el
cuadro de texto txtDoctor.
b. Crear un nuevo objeto cookie, objNewCookie, con el nombre de cookie
Benefits.
Sustituiremos la cookie Benefits existente con una nueva cookie que
contiene la informacin actualizada.
c. Establecer la fecha de expiracin de la cookie Benefits a 30 das a partir
de la fecha actual.
d. Agregar a la cookie dos valores, denominados doctor y life. Estos
valores contendrn strDoc y strLife, respectivamente.
e. Escribir la cookieobjNewCookie.
Visual Basic .NET
Visual C#
13
El cdigo debera ser similar al siguiente:
strDoc = txtDoctor.Text
Dim objNewCookie As New HttpCookie("Benefits")
objNewCookie.Expires = DateTime.Now.AddDays(30)
objNewCookie.Values.Add("doctor", strDoc)
objNewCookie.Values.Add("life", strLife)
Response.Cookies.Add(objNewCookie)
strDoc = txtDoctor.Text;
HttpCookie objNewCookie = new HttpCookie("Benefits");
objNewCookie.Expires = DateTime.Now.AddDays(30);
objNewCookie.Values.Add("doctor", strDoc);
objNewCookie.Values.Add("life", strLife);
Response.Cookies.Add(objNewCookie);
4. Finalmente, debemos agregar cdigo al procedimiento de evento
cmdSave_Click que redirecciona al usuario de regreso a la pgina
default.aspx. El cdigo agregado debera ser similar al siguiente:
Response.Redirect("default.aspx")
Response.Redirect("default.aspx");
5. Guardar el archivo medical.aspx.vb o medical.aspx.cs.
Almacenar las selecciones de seguro de vida (life insurance)
1. Abrir life.aspx.vb o life.aspx.cs.
2. En el procedimiento de evento cmdSave_Click, agregar cdigo que
recupere toda la informacin de la cookie Benefits, pero slo si la cookie
existe y contiene informacin.
Este cdigo es idntico al cdigo agregado a medical.aspx.
3. Buscar la siguiente lnea de cdigo:
'TODO Lab 14: Build the string
//TODO Lab 14: Build the string
Si esta seccin de cdigo no se encuentra en nuestro archivo
life.aspx, podemos copiar el cdigo del archivo life.aspx file de la carpeta
carpeta_instalacin\Labfiles\Lab14\VB\Starter\BenefitsVB o
carpeta_instalacin\Labfiles\Lab14\CS\Starter\BenefitsCS.
Visual Basic .NET
Visual C#
Visual Basic .NET
Visual C#
Visual Basic .NET
Visual C#
Note
14
4. Eliminar el comentario del cdigo bajo este comentario.
Este cdigo genera una cadena que incluye las opciones seleccionadas de
seguro de vida y el valor introducido para el importe de la cobertura
(coverage).
5. Agregar cdigo para crear y escribir la cookie Benefits.
Este cdigo es idntico al cdigo agregado a medical.aspx.
6. Agregar cdigo para redireccionar la pgina de regreso a la pgina
default.aspx.
7. Una vez finalizado, todo el procedimiento de evento cmdSave_Click de
life.aspx debera ser similar al siguiente:
If Page.IsValid Then
lblMessage.Text = "Valid!"
'TODO Lab 14: Set Session variables
Session("Name") = txtName.Text
Session("Birth") = txtBirth.Text
Dim objCookie As HttpCookie = _
Request.Cookies("Benefits")
Dim strDoc As String
Dim strLife As String
If Not objCookie Is Nothing Then
strDoc = objCookie.Values("doctor")
strLife = objCookie.Values("life")
End If
If (chkShortTerm.Checked) Then
If (chkLongTerm.Checked) Then
strLife = "Short Term and Long Term"
Else
strLife = "Short Term"
End If
ElseIf (chkLongTerm.Checked) Then
strLife = "Long Term"
End If
strLife &= ": Coverage = $" & txtCoverage.Text
Dim objNewCookie As New HttpCookie("Benefits")
objNewCookie.Expires = DateTime.Now.AddDays(30)
objNewCookie.Values.Add("doctor", strDoc)
objNewCookie.Values.Add("life", strLife)
Response.Cookies.Add(objNewCookie)
Response.Redirect("default.aspx")
End If
Podemos copiar y pegar este cdigo desde el archivo
VB\Starter\life.txt. Este archivo puede encontrarse dentro del fichero
labs12.zip
Visual Basic .NET
Nota
15
if (Page.IsValid)
{
lblMessage.Text = "Valid!";
//TODO Lab 14: Set Session variables
Session["Name"] = txtName.Text;
Session["Birth"] = txtBirth.Text;
HttpCookie objCookie =
Request.Cookies["Benefits"];
string strDoc = "";
string strLife = "";
if (objCookie != null)
{
strDoc = objCookie.Values["doctor"];
strLife = objCookie.Values["life"];
}
if (chkShortTerm.Checked)
{
if (chkLongTerm.Checked)
{
strLife = "Short Term and Long Term";
}
else
{
strLife = "Short Term";
}
}
else if (chkLongTerm.Checked)
{
strLife = "Long Term";
}
strLife += ": Coverage = $" + txtCoverage.Text;
HttpCookie objNewCookie = new HttpCookie("Benefits");
objNewCookie.Expires = DateTime.Now.AddDays(30);
objNewCookie.Values.Add("doctor", strDoc);
objNewCookie.Values.Add("life", strLife);
Response.Cookies.Add(objNewCookie);
Response.Redirect("default.aspx");
}
Podemos copiar y pegar este cdigo desde el archivo
CS\Starter\life.txt. Este archivo puede encontrarse dentro del
fichero labs12.zip
8. Guardar el archivo life.aspx.vb o life.aspx.cs.
Visual C#
Nota
16
Probar la cookie
1. Generar y examinar la pgina default.aspx.
2. Hacer clic en el enlace a Medical.
3. Rellenar la informacin requerida y hacer clic en Save.
4. Seremos retornados a default.aspx, y la informacin de doctores se ha
cumplimentado.
5. Hacer clic en el enlace a Life Insurance.
6. Rellenar la informacin requerida, seleccionar una o ambas opciones de
periodo de cobertura, y hacer clic en Save.
7. Seremos retornados a default.aspx y la informacin relativa al seguro de
vida se ha cumplimentado.
17
Ejercicio 3
Utilizar variables de aplicacin
En este ejercicio, agregaremos un contador de pginas a la pgina
retirement.aspx.
Deseamos proporcionar una forma rpida y sencilla para que los directivos
puedan ver cuntos empleados acceden al sitio Web Benefits. Para ello, hemos
decidido implementar un contador de pginas en la pgina default.aspx
utilizando una variable de aplicacin. Debemos asegurarnos de que el contador
no se incrementa cuando tiene lugar el postback de una pgina, y que slo
cuenta las visitas nicas a la pgina.
Agregar componentes de la interfaz de usuario (IU)
1. Abrir la pgina retirement.aspx.
2. Agregar dos etiquetas y un cuadro de texto en la parte inferior del
formulario, para que ste tenga un aspecto similar al siguiente.
3. Ponerle el nombre txtVisits al nuevo cuadro de texto.
Escenario
18
Agregar el cdigo
1. En el procedimiento de evento Page_Load, agregar cdigo que incremente
el valor de la variable de aplicacin Visits en una unidad.
2. El cdigo debera bloquear la variable de aplicacin antes de incrementarla,
y debera desbloquearla despus de incrementarla. Insertar el cdigo de
modo que se ejecute nicamente cuando la pgina no enve informacin de
retorno en el postback.
3. Agregar cdigo para establecer la propiedad Text de txtVisits al valor
almacenado en la variable de aplicacin Visits. Este cdigo debera
ejecutarse cada vez que se cargue la pgina.
4. Una vez finalizado, el procedimiento de evento Page_Load debera ser
similar al siguiente:
If Not Page.IsPostBack Then
Dim dsRetirement As New DataSet()
dsRetirement.ReadXml( _
Server.MapPath("mutual_funds.xml"))
dgRetirement.DataSource = dsRetirement
dgRetirement.DataBind()
Application.Lock()
Application("Visits") = CInt(Application("Visits")) + 1
Application.UnLock()
End If
txtVisits.Text = CStr(Application("Visits"))
if (!Page.IsPostBack)
{
DataSet dsRetirement = new DataSet();
dsRetirement.ReadXml(
Server.MapPath["mutual_funds.xml"]);
dgRetirement.DataSource = dsRetirement;
dgRetirement.DataBind();
Application.Lock();
Application["Visits"]
=Convert.ToInt16(Application["Visits"]) + 1;
Application.UnLock();
}
txtVisits.Text = Application["Visits"].ToString();
Probar la variable de aplicacin
1. Generar y examinar la pgina retirement.aspx.
2. Actualizar el navegador.
3. El contador de pginas se incrementa cada vez que actualizamos la pgina.
Visual Basic .NET
Visual C#
19
Ejercicio 4
Almacenar variables de sesin en una base de datos
En este ejercicio, almacenaremos las variables de sesin de nombre de usuario y
fecha de nacimiento en una base de datos SQL Server.
Para preparar nuestro sitio Web a una implantacin en una granja Web, las
variables de sesin se almacenarn en una ubicacin centralizada. Hemos
decidido utilizar una base de datos SQL Server como solucin de
almacenamiento a corto plazo.
Configurar Web.config
1. Abrir el archivo Web.config de la aplicacin Web Benefits.
2. Buscar el elemento sessionState.
3. Cambiar el modo de sessionState por SQLServer, y establecer la cadena de
conexin para utilizar la seguridad integrada para conectarse a localhost.
Una vez finalizado, el elemento sessionState debera ser similar al
siguiente:
<sessionState
mode="SQLServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;
Integrated Security=SSPI"
cookieless="false"
timeout="20"
/>
Debido a que el archivo Web.config es un archivo Extensible
Markup Language (XML), es importante el uso correcto de maysculas de
los nombres de los elementos y los atributos.
4. Guardar el archivo Web.config.
Instalar y configurar las bases de datos
Las variables de sesin estn almacenadas en dos bases de datos
preconfiguradas, denominadas ASPState y tempdb. Para instalar y configurar
las bases de datos, seguir estos pasos:
1. En el men Inicio, seleccionar Todos los programas, seleccionar
Accesorios y hacer clic en Lnea de comandos.
Se abrir una ventana de comandos.
2. En la lnea de comandos, escribir el siguiente comando, siendo version la
ltima versin del .NET Framework instalada en nuestro equipo, y pulsar
ENTER:
cd \WINDOWS\Microsoft.NET\Framework\version\
La lnea de comandos cambia al nuevo directorio.
Escenario
Importante
20
3. En la lnea de comandos, escribir el siguiente comando y pulsar ENTER:
OSQL S localhost E <InstallSqlState.sql
La ventana de comandos muestra una serie de nmeros y mensajes, y
regresa a la lnea de comandos. Las bases de datos ASPState y tempdb se
han restablecido.
4. Cerrar la lnea de comandos, y abrir Windows Explorer.
5. Ir al siguiente directorio:
VB\Starter
CS\Starter
Estas carpetas pueden encontrarse dentro del fichero labs12.zip
6. Hacer doble clic en Lab12.bat.
Este archivo por lotes ejecuta una consulta SQL que configura la seguridad
de las bases de datos ASPState y tempdb.
7. Cerrar Windows Explorer.
Probar la aplicacin Web
1. Generar y examinar la pgina default.aspx para probar la aplicacin Web
Benefits.
2. Hacer clic en el enlace a Medical, introducir la informacin necesaria, y
hacer clic en Save.
3. Hacer clic en el enlace a Life Insurance.
Comprobar que las variables de sesin que contienen nuestro nombre y
fecha de nacimiento funcionan correctamente.
Visual Basic .NET
Visual C#
ndice
Descripcin 1
Leccin: administracin del estado 2
Leccin: variables de aplicacin y de sesin 17
Leccin: cookies y sesiones que no utilizan cookies 29
Administracin del estado
Administracin del estado 1
Descripcin
Administracin del estado
Variables de aplicacin y de sesin
Cookies y sesiones que no utilizan cookies
***
Microsoft ASP.NET permite administrar el estado de una aplicacin Web. El
estado es la capacidad de una aplicacin Web de conservar la informacin del
usuario.
En este mdulo, estudiaremos cmo administrar el estado de una aplicacin
Web ASP.NET.
En este mdulo, aprenderemos a:
Describir la administracin del estado y las distintas opciones disponibles
para administrar el estado en una aplicacin Web ASP.NET.
Utilizar variables de aplicacin y de sesin para administrar el estado en
aplicaciones Web ASP.NET.
Utilizar cookies y sesiones que no utilizan cookies para administrar el
estado en aplicaciones Web ASP.NET.
Introduccin
Objetivos
2 Administracin del estado
Leccin: administracin del estado
Ques la administracindel estado?
Tipos de administracin del estado
Administracin del estado en el lado del servidor
Administracin del estado en el lado del cliente
El archivo Global.asax
***
La conexin que se establece entre un usuario (el equipo cliente) y un servidor
Web se denomina sesin. Las sesiones pueden abarcar mltiples pginas Web y
su seguimiento se realiza mediante la administracin del estado.
La administracin del estado es el proceso por el cual mantenemos la misma
informacin a travs de mltiples peticiones para las mismas o distintas pginas
Web.
En esta leccin, empezaremos a conocer en detalle qu es la administracin del
estado y por qu es importante administrar el estado. Estudiaremos la
administracin del estado en el lado del servidor y la administracin del estado
en el lado del cliente. Tambin estudiaremos el archivo global.asax.
En esta leccin, aprenderemos a:
Describir la administracin del estado.
Identificar los distintos tipos de opciones de administracin del estado.
Describir la administracin del estado en el lado del servidor.
Describir la administracin del estado en el lado del cliente.
Describir los distintos eventos que controla el archivo global.asax.
Introduccin
Objetivos de la leccin
Administracin del estado 3
Qu es la administracin del estado?
Nombre
Apellido
Introduzca su informacin
de iniciodesesin:
John
Enviar
Enviar
Chen
Servidor Web
Servidor Web
Login.aspx Login.aspx
Servidor Web
Servidor Web
HolaJohnChen
Greetings.aspx
Introduzca su informacin
de iniciodesesin:
John
Enviar
Enviar
Chen
Hola
Greetings.aspx
Heolvidado
quineres!!
Heolvidado
quineres!!
Nombre
Apellido
Sin administracin del
estado
Con administracin del
estado
***
Al igual que las tecnologas basadas en Hypertext Transfer Protocol (HTTP),
los formularios Web Forms no tienen estado, lo que significa que no indican
automticamente si las peticiones de una secuencia son todas del mismo cliente
ni si una nica instancia de navegador sigue visualizando de forma activa una
pgina Web o un sitio Web. Adems, las pginas Web se destruyen y vuelven a
crearse a continuacin con cada nueva peticin al servidor Web; por tanto, la
informacin de las pginas no existe ms all del ciclo de vida de una nica
pgina.
ASP.NET ofrece una administracin del estado que guarda informacin en el
servidor entre pginas, que ayuda a mantener la continuidad de la informacin
del usuario (estado) durante una visita a un sitio Web.
Si se mantiene el estado entre pginas, la informacin suministrada
originalmente por los usuarios puede ser reutilizada; por ello, los usuarios no
necesitan volver a introducir la misma informacin varias veces cada vez que se
enva una pgina de retorno al servidor.
Por ejemplo, en la ilustracin anterior, el usuario, J ohn Chen, introduce su
nombre en el formulario login.aspx. Despus de introducir sus datos personales,
esa informacin se enva al servidor y se muestra la pgina siguiente, el
formulario greetings.aspx. Sin administracin del estado, la informacin que el
usuario ha introducido en la primera pgina se ha perdido.
Sin embargo, si se utiliza administracin del estado en la aplicacin Web, puede
mantenerse el estado a travs de varias pginas Web. Por tanto, cuando la
informacin personal del usuario se enva al servidor, la segunda pgina, el
formulario greetings.aspx, da la bienvenida al usuario con su nombre, J ohn
Introduccin
Administracin del
estado
Ejemplo
4 Administracin del estado
Chen, que el usuario introdujo en el formulario login.aspx, la primera pgina de
la aplicacin Web.
Administracin del estado 5
Tipos de administracin del estado
Cadenas deconsulta
Informacinaadidaal final de
una URL
Basededatos
Enalgunos casos, seutilizael
soportedebasededatos para
mantener el estado enel sitio Web
PropiedadViewState
Conservavalores entremltiples
peticiones paralamismapgina
Estado desesin
Lainformacinestdisponible
nicamenteparael usuario deuna
sesinespecfica
Cookies
Archivo detexto quealmacena
informacinparamantener el
estado
Estado delaaplicacin
Lainformacinestdisponible
paratodos los usuarios deuna
aplicacinWeb
Administraci Administraci ndel estado en ndel estado en
el lado del cliente el lado del cliente
Administraci Administraci ndel estado en n del estado en
el lado del servidor el lado del servidor
***
ASP.NET proporciona dos tipos de administracin del estado que pueden
utilizarse para mantener el estado entre envos y respuestas al servidor. La
eleccin de uno de los dos tipos de administracin del estado disponibles en
ASP.NET depende principalmente de la naturaleza de la aplicacin Web.
Los dos tipos de administracin del estado son:
Lado servidor
Las opciones de la administracin del estado en el lado del servidor utilizan
recursos del servidor para almacenar la informacin del estado. La
seguridad de estas opciones es mayor que en el lado del cliente.
Lado cliente
La administracin del estado en el lado del cliente no utiliza recursos del
servidor para almacenar la informacin del estado. Las opciones en el lado
del cliente tienden a tener seguridad mnima, pero ofrecen un rpido
rendimiento del servidor porque no existe demanda en el servidor para
mantener el estado.
La administracin del estado en el lado del servidor contiene diferentes
opciones a escoger, incluyendo:
Estado de aplicacin
En el estado de aplicacin, la informacin est disponible para todos los
usuarios de una aplicacin Web; por ejemplo, almacenar el nmero de
visitantes a una aplicacin Web.
Estado de sesin
Introduccin
Administracin del
estado en el lado del
cliente y en el lado del
servidor
Lado servidor
6 Administracin del estado
En el estado de sesin, la informacin est disponible nicamente para un
usuario de una sesin especfica de una aplicacin Web; por ejemplo,
almacenar el esquema de colores preferido de un usuario.
Administracin del estado 7
Base de datos Microsoft SQL Server
o un servidor de estado
Otra opcin de la administracin del estado en el lado del servidor es utilizar
la tecnologa de bases de datos. Podemos utilizar una base de datos SQL
Server o un servidor de estado para almacenar informacin especfica del
usuario cuando el almacn de informacin es de gran tamao. La base de
datos SQL Server o un servidor de estado pueden utilizarse conjuntamente
con el estado de sesin y cookies.
El objeto Cache
Tambin podemos utilizar el objeto Cache para administrar el estado a nivel
de aplicacin.
La administracin del estado en el lado del cliente tambin ofrece distintas
opciones para mantener el estado. Estas opciones incluyen:
Cookies
Una cookie es un archivo de texto que puede utilizarse para almacenar
pequeas cantidades de informacin necesarias para mantener el estado.
La propiedad ViewState
Los formularios Web Forms proporcionan la propiedad ViewState como
una estructura incluida para conservar automticamente valores entre
mltiples peticiones a la misma pgina. La propiedad ViewState se
mantiene como un campo oculto en la pgina.
Cadenas de consulta
Una cadena de consulta es informacin que se aade al final de una URL
(Uniform Resource Locator). Un ejemplo tpico podra ser el siguiente:
http://www.contoso.com/listwidgets.aspx?category=basic&price=100
En la ruta URL anterior, la cadena de consulta se inicia con un signo de
interrogacin (?) e incluye dos pares atributo-valor, categora y precio.
Este mdulo cubre informacin que pertenece nicamente a cookies.
Para ms informacin sobre ViewState y cadenas de consulta, consultar la
documentacin de Microsoft Visual Studio .NET.
Lado cliente
Nota
8 Administracin del estado
Administracin del estado en el lado del servidor
El estado delaaplicacines unmecanismo dealmacenamiento
global accesibledesdetodas las pginas delaaplicacinWeb
El estado desesinestlimitado alasesindeexplorador
actual
Los valores se conservan mediante el uso de variables de
aplicacin y de sesin
Escalabilidad
LasesinASP.NET seidentificaconlacadenaSessionID
Servidor Web
Servidor Web
Equipocliente
Equipocliente
Variables de
aplicaciny de sesin
SessionID
***
ASP.NET ofrece varias opciones para administrar el estado en el lado del
servidor. Los estados de aplicacin y de sesin son dos de estas opciones. Esta
seccin trata de los estados de aplicacin y de sesin en mayor detalle.
ASP.NET proporciona el estado de aplicacin utilizando una instancia de la
clase HttpApplicationState para cada aplicacin Web activa. El estado de
aplicacin es un mecanismo de almacenamiento global al que se puede acceder
desde todas las pginas de la aplicacin Web, y por tanto es til para almacenar
informacin del usuario que debe preservarse entre transferencias al servidor y
viajes entre pginas.
El estado de la aplicacin es una estructura de diccionario clave-valor que se
crea en cada peticin a una URL especfica. Podemos agregar la informacin
especfica de la aplicacin a esta estructura para almacenarla entre peticiones de
pginas. Despus de agregar la informacin especfica de aplicacin al estado
de la aplicacin, el servidor la gestiona.
ASP.NET proporciona las variables de aplicacin que mantienen el estado de
aplicacin. Los datos ideales para insertar en variables de aplicacin son los
datos compartidos por mltiples sesiones y que no cambian a menudo.
ASP.NET proporciona estado de sesin utilizando una instancia de la clase
HttpSessionState para cada sesin de aplicacin Web activa.
El estado de sesin es similar al estado de aplicacin, salvo en que est limitado
a la sesin actual del navegador. Si distintos usuarios estn utilizando una
aplicacin Web, cada usuario tendr un estado de sesin distinto. Adems, si el
mismo usuario abandona la aplicacin Web y regresa ms tarde, ese usuario
tambin tendr un estado de sesin distinto al que tena antes.
Introduccin
Estado de aplicacin
Variables de aplicacin
Estado de sesin
Administracin del estado 9
El estado de sesin est almacenado como una estructura de diccionario clave-
valor que se utiliza par almacenar informacin especfica de la sesin que debe
mantenerse entre transferencias de pginas al servidor y entre peticiones de
pginas. Tras agregar la informacin especfica de la aplicacin al estado de
sesin, el servidor la gestiona. Podemos configurar ASP.NET para
automticamente serialice y almacene la informacin de sesin en una base de
datos SQL Server o en un servidor de estado.
ASP.NET proporciona las variables de sesin necesarias para mantener el
estado de sesin. Los datos ideales para almacenar en las variables de estado de
sesin son datos fugaces o confidenciales, especficos de una sesin individual.
Los estados de aplicacin y de sesin se implementan como una tabla
hash, y almacenan datos basndose en combinaciones de pares clave/valor. Una
tabla hash es similar al concepto de un objeto dictionary.
Con ASP.NET, el estado de sesin puede utilizarse tanto en configuraciones de
mltiples equipos como de mltiples procesos; optimizando por tanto los
escenarios de escalabilidad de una aplicacin Web.
Cada sesin de aplicacin Web activa est identificada y monitorizada
utilizando una cadena SessionID de 120 bits que nicamente contiene los
caracteres ASCII permitidos en las URLs. Las cadenas SessionID estn
comunicadas a travs de peticiones cliente-servidor, mediante una cookie HTTP
o mediante una URL modificada, con la cadena SessionID embebida,
denominadas normalmente SessionID sin cookies, dependiendo de la
configuracin de la aplicacin Web.
La administracin del estado en el lado del servidor requiere que una cookie
almacene la SessionID en el equipo cliente. Debido a que la vida de una
SessionID es muy breve, slo lo que dura una sesin, el mecanismo que
ASP.NET utiliza para almacenar la informacin de sesin, en una base de datos
SQL Server o en un servidor de estado, tambin se utiliza para permitir que la
aplicacin sea escalable, pero no para un almacenamiento a largo plazo. Si
deseamos implementar el almacenamiento a largo plazo de la informacin de
sesin del usuario, debemos requerir a los usuarios que introduzcan su
informacin personal, y deberemos implementar nuestra propia solucin de
almacenamiento utilizando una base de datos que almacene permanentemente
la informacin personal de usuarios registrados.
Variables de sesin
Nota
Escalabilidad
Identificar y hacer el
seguimiento de una
sesin
10 Administracin del estado
Administracin del estado en el lado del cliente
Utilizacookies paramantener el estado
Cookies persistentes
Cookies temporales/no persistentes
Menos fiablequelas opciones deadministracindel estado enel lado del
servidor
El usuario puede eliminar cookies
Menos seguro quelas opciones deadministracindel estado enel lado
del servidor
Cantidaddeinformacinlimitada
Restricciones en el lado del cliente en el tamao de los archivos
Servidor Web
Servidor Web
Equipo cliente
Equipo cliente
Cookies
***
La mayora de aplicaciones Web utilizan cookies para la administracin del
estado en el lado del cliente.
Una cookie es una pequea cantidad de datos que se almacena en un archivo de
texto en el sistema de archivos del equipo cliente o en memoria en la sesin
cliente-navegador. Una cookie contiene informacin especfica de la pgina que
el servidor enva al cliente, junto con la salida de la pgina.
Podemos utilizar cookies para almacenar informacin sobre un determinado
cliente, sesin o aplicacin. Las cookies se almacenan en el equipo cliente, y
cuando el navegador solicita una pgina, enva la informacin de la cookie,
junto con la informacin solicitada. El servidor est autorizado a leer la cookie
y extraer su valor. Cada cookie contiene la informacin del dominio que invoc
la cookie. Podemos tener varias cookies invocadas para un dominio.
Los dos tipos de cookies son:
Temporales
Las cookies temporales, tambin denominadas cookies de sesin o no
persistentes, existen nicamente en la memoria del navegador. Cuando el
ste se apaga, las cookies temporales que se han aadido se pierden.
Persistentes
Las cookies persistentes son similares a las cookies temporales, excepto en
que las cookies persistentes tienen un periodo de expiracin fijo. Cuando un
navegador solicita una pgina que crea una cookie persistente, ste guarda
esa cookie en el disco duro del usuario. Podemos crear una cookie
persistente que dure meses, o incluso aos, en el equipo cliente. Con
Microsoft Internet Explorer, las cookies persistentes se almacenan en un
Introduccin
Cookies
Tipos de cookies
Administracin del estado 11
archivo denominado nombreusuario@nombredominio.txt, que se crea en el
disco duro del cliente.
12 Administracin del estado
Las cookies pueden expirar cuando finaliza la sesin del explorador (cookies
temporales), o pueden existir indefinidamente en el equipo cliente, dependiendo
de las reglas de expiracin del cliente (cookies persistentes).
Los usuarios tambin pueden decidir eliminar cookies de su equipo antes de que
stas expiren. Por tanto, no existe garanta de que una cookie persistente
permanecer en el equipo de un usuario durante el periodo de tiempo
especificado.
Las cookies son menos seguras si las comparamos con las opciones de
administracin del estado en el lado del servidor. Las cookies tambin estn
sujetas a la manipulacin. Lo usuarios pueden manipular cookies en su equipo,
lo que puede representar potencialmente un compromiso de seguridad o puede
hacer que la aplicacin que depende de la cookie pueda fallar.
Tambin existe un lmite sobre cunta informacin puede almacenarse en una
cookie ya que los equipos cliente tienen restricciones en el tamao de los
archivos. Adems, cada cookie individual puede contener una cantidad limitada
de informacin, no ms de 4 kilobytes (KB).
Vencimiento
Seguridad
Informacin limitada
Administracin del estado 13
El archivo Global.asax
Slo un archivo Global.asaxpor aplicacin Web
Almacenado en la raz del directorio virtual de la
aplicacin Web
Utilizado para gestionar eventos de aplicacin y de
sesin
El archivo Global.asaxes opcional
***
El archivo global.asax es un archivo declarativo que se utiliza para la gestin de
eventos mientras la aplicacin Web se est ejecutando.
Algunas de las caractersticas del archivo global.asax son:
Por cada aplicacin Web ASP.NET se soporta un archivo global.asax.
El archivo global.asax se almacena en la raz del directorio virtual de la
aplicacin Web.
El archivo global.asax puede gestionar eventos de aplicacin y de sesin
(inicio y final) que pueden utilizarse para inicializar variables de aplicacin
y de sesin.
El archivo global.asax es opcional. Si no definimos el archivo, el marco de
trabajo de las pginas ASP.NET asume que no hemos definido ningn
controlador de eventos de aplicacin o sesin.
Introduccin
14 Administracin del estado
El archivo global.asax (continuacin)
ServidorWebASP.NET
Cliente
ASP.NET HTTPRuntime
ASP.NET HTTPRuntime
IIS
IIS
Application_BeginRequest
Application_BeginRequest
Application_AuthenticateRequest
Application_AuthenticateRequest
Application_AuthorizeRequest
Application_AuthorizeRequest
Application_ResolveRequestCache
Application_ResolveRequestCache
Application_AquireRequestState
Application_AquireRequestState
Application_PreRequestHandlerExecute
Application_PreRequestHandlerExecute
Application_EndRequest
Application_EndRequest
Application_UpdateRequestCache
Application_UpdateRequestCache
Application_ReleaseRequestState
Application_ReleaseRequestState
Application_PostRequestHandlerExecute
Application_PostRequestHandlerExecute
Ejecucindelapgina
Ejecucindelapgina
Peticin
Peticin
Respuesta
Respuesta
***
El archivo global.asax es un archivo declarativo que se utiliza para gestionar
eventos mientras la aplicacin Web se est ejecutando.
El archivo global.asax soporta tres categoras de eventos:
Eventos que se invocan cuando se solicita una pgina.
Eventos que se invocan cuando se enva la pgina solicitada.
Eventos de aplicacin condicionales.
La siguiente tabla lista los eventos que se invocan cuando se solicita una
pgina.
Nombre del evento Descripcin
Application_BeginRequest Este evento se invoca cada vez que se
recibe una nueva peticin.
Application_AuthenticateRequest Este evento indica que la peticin est
preparada para ser autenticada.
Application_AuthorizeRequest Este evento indica que la peticin est
preparada para ser autorizada.
Application_ResolveRequestCache Este evento es utilizado por el mdulo de
la cach de salida para detener el
procesamiento de peticiones que han
sido almacenadas en cach.
Application_AcquireRequestState Este evento indica que debera obtenerse
el estado para cada peticin.
Introduccin
Categoras de eventos
Eventos invocados
cuando se solicita una
pgina
Administracin del estado 15
Application_PreRequestHandlerExecute Este evento indica que el gestor de
peticiones est a punto de ejecutarse.
16 Administracin del estado
Global.asax tambin incluye eventos invocados cuando la pgina solicitada se
enva de vuelta al cliente. La siguiente tabla lista estos eventos.
Nombre del evento Descripcin
Application_PostRequestHandlerExecute Este evento es el primero disponible
despus de que el controlador, como
una pgina ASP.NET o un servicio
Web, haya finalizado su trabajo.
Application_ReleaseRequestState Este evento se invoca cuando el estado
de la peticin debe almacenarse, porque
la aplicacin Web ASP.NET finaliza
con l.
Application_UpdateRequestCache Este evento indica que el procesamiento
de cdigo ha finalizado y que el archivo
est preparado para ser agregado a la
cach de ASP.NET.
Application_EndRequest Este evento es el ltimo evento que se
invoca cuando finaliza la aplicacin
Web ASP.NET.
Los eventos de aplicacin condicionales son eventos que pueden o no ser
lanzados durante le procesamiento de una peticin. La siguiente tabla muestra
algunos de los eventos de aplicacin condicionales ms habituales.
Nombre del evento Descripcin
Application_Start Este evento se invoca cuando se inicia
una aplicacin Web ASP.NET.
Application_End Este evento es otro evento de ocurrencia
nica. Es el evento recproco de
Application_Start; se invoca cuando se
cierra la aplicacin Web ASP.NET.
Session_Start Este evento se invoca cuando se inicia la
Session de un usuario en una aplicacin
Web ASP.NET.
Session_End Este evento es un evento reciproco de
Session_Start; este evento se invoca
cuando finaliza la sesin de un usuario.
Application_Error Este evento se invoca cuando ocurre un
error no controlado en una aplicacin
Web ASP.NET.
Eventos invocados
cuando se enva la
pgina solicitada
Eventos de aplicacin
condicionales
Administracin del estado 17
Leccin: variables de aplicacin y de sesin
Inicializar variables de aplicacin y de sesin
Utilizar variables de aplicacin y de sesin
Demostracin: uso de las variables desesin
Duracin de las variables de aplicacin y de sesin
Almacenamiento escalable de variables de aplicacin y
de sesin
Almacenar las variables de aplicacin y de sesin en
una base de datos
***
Podemos utilizar las variables de aplicacin y de sesin para compartir
informacin entre las pginas de una aplicacin Web ASP.NET. En esta
leccin, estudiaremos cmo inicializar y utilizar las variables de aplicacin y de
sesin. Tambin estudiaremos cmo especificar la duracin de las variables de
aplicacin y de sesin y cmo afectan al almacenamiento escalable. Finalmente,
estudiaremos cmo almacenar las variables de aplicacin y de sesin en una
base de datos.
En esta leccin, aprenderemos a:
Inicializar variables de aplicacin y de sesin.
Establecer y leer variables de aplicacin y de sesin.
Modificar la duracin de la variable de aplicacin y de sesin.
Describir los mtodos en el proceso y fuera del proceso utilizados para
almacenar el estado de sesin.
Almacenar variables de aplicacin y de sesin en una base de datos.
Introduccin
Objetivos de la leccin
18 Administracin del estado
Inicializar variables de aplicacin y de sesin
Las variables se inicializan en Global.asax
El objeto Applicationcomparte informacin entre todos
los usuarios de unaaplicacin Web
El objetoSessionalmacena informacin para una
sesin de usuario concreta
Sub Application_Start(s As Object,e As EventArgs)
Application("NumberofVisitors") = 0
End Sub
Sub Application_Start(s As Object,e As EventArgs)
Application("NumberofVisitors") = 0
End Sub
protected void Application_Start(Object sender,EventArgs e)
{
Application["NumberofVisitors"] = 0;
}
protected void Application_Start(Object sender,EventArgs e)
{
Application["NumberofVisitors"] = 0;
}
***
Inicializamos las variables de aplicacin y de sesin en los procedimientos de
eventos Start de los objetos Application y Session del archivo global.asax.
Utilizamos el objeto Session para almacenar la informacin necesaria de una
sesin de usuario concreta. Las variables que se almacenan en el objeto Session
no se desecharn cuando el usuario viaje por las distintas pginas de la
aplicacin Web. En lugar de ello, estas variables persistirn durante toda la
sesin del usuario.
El siguiente cdigo de ejemplo muestra cmo se utilizan las variables de sesin
para almacenar el esquema de colores preferido de una determinada sesin de
usuario:
Sub Session_Start(ByVal Sender As Object, _
ByVal e As EventArgs)
Session("BackColor") = "beige"
Session("ForeColor") = "black"
End Sub
protected void Session_Start(Object sender, EventArgs e)
{
Session["BackColor"] = "beige";
Session["ForeColor"] = "black";
}
Introduccin
Variables de sesin
Visual Basic .NET
C#
Administracin del estado 19
Podemos utilizar el objeto Application para compartir informacin de estado
entre todos los usuarios de una aplicacin Web. Cuando el primer usuario de la
aplicacin Web solicita un archivo .aspx, se crea un objeto Application. El
objeto Application se destruye cuando todos los usuarios han abandonado la
aplicacin Web y, a continuacin, se descarga la aplicacin Web.
Por ejemplo, podramos almacenar el nmero total de visitantes de un sitio Web
en una variable de nivel de aplicacin:
Sub Application_Start(ByVal Sender As Object, _
ByVal e As EventArgs)
Application("NumberofVisitors") = 0
End Sub
protected void Application_Start(Object sender, EventArgs e)
{
Application["NumberofVisitors"] = 0;
}
Variables de aplicacin
Visual Basic .NET
C#
20 Administracin del estado
Utilizar variables de aplicacin y de sesin
Establecer variables de aplicacin y sesin
Leer variables de aplicacin y de sesin
Session("BackColor") = "blue"
Application.Lock()
Application("NumberOfVisitors") += 1
Application.UnLock()
Session("BackColor") = "blue"
Application.Lock()
Application("NumberOfVisitors") += 1
Application.UnLock()
strBgColor = Session("BackColor")
lblNbVisitor.Text = Application("NumberOfVisitors")
strBgColor = Session("BackColor")
lblNbVisitor.Text = Application("NumberOfVisitors")
Session["BackColor"] = "blue";
Application.Lock();
Application["NumberOfVisitors"] =
(int)Application["NumberOfVisitors"] + 1;
Application.UnLock();
Session["BackColor"] = "blue";
Application.Lock();
Application["NumberOfVisitors"] =
(int)Application["NumberOfVisitors"] + 1;
Application.UnLock();
strBgColor = (string)Session["BackColor"];
lblNbVisitor.Text = Application["NumberOfVisitors"].ToString();
strBgColor = (string)Session["BackColor"];
lblNbVisitor.Text = Application["NumberOfVisitors"].ToString();
***
Para utilizar variables de aplicacin y de sesin en ASP.NET, simplemente
utilizamos una clave de cadena y establecemos un valor.
Para establecer la variable de sesin, debemos proporcionar una clave que
identifique el elemento que estamos almacenando, utilizando una instruccin
como la siguiente:
Session("BackColor") = "blue"
La instruccin anterior agrega una clave, denominada BackColor, al estado de
sesin con el valor blue.
Puede accederse a las variables de aplicacin en un entorno de mltiples
usuarios; por ello, cuando se actualicen los datos de Application, debemos
evitar que otros usuarios o aplicaciones actualicen los datos simultneamente.
ASP.NET proporciona un sencillo conjunto de mtodos de bloqueo,
Application.Lock() y Application.UnLock(), que pueden utilizarse para evitar
el acceso mltiple y simultneo de la variable de aplicacin. El siguiente cdigo
muestra el uso de los mtodos Application.Lock() y Application.UnLock():
Application.Lock()
Application("NumberOfVisitors") += 1
Application.UnLock()
Application.Lock();
Application["NumberofVisitors"] =
(int)Application["NumberOfVisitors"] + 1;
Application.UnLock();
Introduccin
Establecer variables de
aplicacin y de sesin
Visual Basic .NET
C#
Administracin del estado 21
Para utilizar una variable de sesin o de aplicacin en una pgina ASP.NET,
simplemente necesitamos leer el valor del objeto Session o Application:
strBgColor = Session("BackColor")
lblNbVisitor.Text = Application("NumberOfVisitors")
strBgColor = (string)Session["BackColor"];
lblNbVistitor.Text =
Application["NumberofVisitors"].ToString();
Leer variables de
aplicacin y de sesin
Visual Basic.NET
C#
22 Administracin del estado
Demostracin: uso de las variables de sesin
Inicializar una variable de sesin (un
nmero) en global.asax
Acceder a la variable desesin desde una
pgina
Acceder a la variable desesin desde otra
pgina y modificarla
Volver a acceder a la variable de sesin
desde la primera pgina
***
En esta demostracin, aprenderemos a utilizar variables de sesin.
El cdigo para esta demostracin se encuentra en los proyectos Demo12VB y
Demo12CS que se pueden encontrar dentro del fichero demos12.zip.
Ejecutar la demostracin
1. Abrir el proyecto Demo12VB o Demo12CS.
2. Abrir la pgina de cdigo subyacente de global.asax.
3. Inicializar una variable de sesin, denominada intNumber a 3, agregando el
siguiente cdigo al procedimiento de evento Session_Start:
Session("intNumber") = 3
Session["intNumber"] = 3;
4. Abrir los archivos UsingSessionVar1.aspx y UsingSessionVar2.aspx.
Se recupera la variable de sesin y se muestra en el procedimiento de evento
Page_Load.
5. Generar y examinar la pgina UsingSessionVar1.aspx.
Se muestra el valor de la variable de sesin, 3.
6. Hacer clic en Next Page.
Se abre la pgina UsingSessionVar2.aspx, incrementa la variable de sesin
en 4, y muestra el nuevo valor, 7.
7. Hacer clic en Previous Page para regresar a UsingSessionVar1.aspx, que
muestra el nuevo valor de la variable de sesin.
Introduccin
Visual Basic .NET
C#
Administracin del estado 23
Duracin de la variable de sesin y de aplicacin
Las variables de sesin tienen una duracin establecida
tras el ltimo acceso
20 minutos es la duracin predeterminada
La duracin de lasesin puede modificarseen
Web.config:
Las variables de aplicacin persisten hastaque se
provoca el evento Application_End
<configuration>
<system.web>
<sessionState timeout="10" />
</system.web>
</configuration>
<configuration>
<system.web>
<sessionState timeout="10" />
</system.web>
</configuration>
***
HTTP es un protocolo sin estado. Un servidor Web no tiene medios para
detectar cuando un usuario abandona un sitio Web. En cambio, el servidor
Web detecta que ha transcurrido un determinado periodo de tiempo sin que el
usuario solicite una pgina. En ese momento, el servidor Web asume que el
usuario ha abandonado el sitio Web y elimina todos los elementos del estado de
sesin asociados a ese usuario.
De forma predeterminada, el tiempo de una sesin finaliza cuando un usuario
no ha solicitado ninguna pgina durante ms de 20 minutos. Si el mismo
usuario solicita una pgina transcurridos 20 minutos, ser tratado como un
nuevo usuario.
Establecer duraciones de sesin ms cortas permite al sitio Web ahorrar
recursos en el servidor Web. En cambio, si nuestra previsin es que el usuario
pase ms de 20 minutos en nuestro sitio Web, deberamos establecer una
duracin de sesin ms larga.
Podemos modificar la duracin de la sesin en el archivo Web.config. Los
archivos Web.config son archivos Extensible Markup Language (XML)
estndares y legibles por parte del usuario que podemos abrir y modificar con
cualquier editor de texto. Por ejemplo, en el siguiente archivo Web.config, la
duracin de la sesin est establecida en 10 minutos:
<configuration>
<system.web>
<sessionState timeout="10" />
</system.web>
</configuration>
Introduccin
Duracin
predeterminada de la
sesin
Nota
Modificar la duracin de
la sesin
24 Administracin del estado
Las variables de aplicacin persisten hasta que se invoca el evento
Application_End. Application_End se invoca inmediatamente antes del final
de todas las instancias de la aplicacin.
Variable de aplicacin
Administracin del estado 25
Almacenamiento escalable de variables de aplicacin y de sesin
y
Por defecto, el estado desesinseadministraenproceso (in process)
Inconvenientedel almacenamiento enproceso:
No escalable
ASP.NET proporcionaalmacenamiento fueradel proceso (out ofprocess)
del estado desesin
El estado puede almacenarse en una base de datos SQL Server o un
servidor de estado
Ventajas del almacenamiento fueradel proceso:
Escalabilidad
SQL
Variables desesin y de aplicacin
Cliente
Granja Web
Variables desesin y de aplicacin
-O-
Servidor deestado
***
Por defecto, el estado de sesin se administra en proceso (in process). En
proceso significa que toda la informacin que se agrega a un estado de sesin se
almacena en el mismo servidor Web que est ejecutando la aplicacin Web
ASP.NET. Sin embargo, el almacenamiento en proceso del estado de sesin
tiene algunos inconvenientes importantes.
Uno de los principales inconvenientes del almacenamiento del estado de sesin
en proceso es que limita la escalabilidad de nuestro sitio Web. No podemos
configurar mltiples servidores para gestionar peticiones.
ASP.NET ofrece dos mtodos que pueden utilizarse para almacenar estado de
sesin fuera de proceso (out of process). Podemos:
Administrar el estado de sesin en una base de datos SQL Server.
Administrar el estado de sesin en un servidor de estado distinto.
Cualquier servidor basado en Microsoft Windows puede ser un servidor de
estado.
Para almacenar el estado de sesin fuera de proceso, debemos modificar el
archivo Web.config para establecer el modo sessionstate con el valor sqlserver
o stateserver, y especificar la ubicacin del servidor. La opcin sqlserver es
similar a la opcin stateserver, salvo en que en la primera la informacin
persiste en SQL Server en lugar de almacenarse en la memoria del equipo.
La principal ventaja de separar el almacenamiento del estado de sesin de la
aplicacin Web es que podemos utilizar un servidor de estado externo o un
equipo que ejecute SQL Server para almacenar el estado de sesin, haciendo
por tanto que la aplicacin Web sea escalable. Para conseguir aplicaciones Web
Introduccin
Inconveniente del
almacenamiento en
proceso
Fuera de proceso
Ventaja del
almacenamiento fuera
de proceso
26 Administracin del estado
ASP.NET escalables, el estado de sesin debe estar compartido por mltiples
servidores que soporten el escenario de granja Web. En un escenario de granja
Web, mltiples servidores estn configurados para gestionar las peticiones de
los usuarios y, en consecuencia, stas pueden ser ruteadas dinmicamente desde
un servidor a otro sin perder las variables de aplicacin y de sesin. Adems,
las variables de sesin pueden recuperarse desde cualquier servidor de la granja
Web, ya que estn almacenadas en un equipo distinto que ejecuta SQL Server o
en un servidor de estado.
Administracin del estado 27
Almacenar variables de aplicacin y de sesin en una base de
datos
Configurar el estado de sesin en Web.config
Modo establecido a sqlservero stateserver
A continuacin, configurar el servidor SQL Server
OSQL crea varios procedimientos almacenados y bases
de datos temporales para almacenar las variables
<sessionState mode="SQLServer"
sqlConnectionString="data source=SQLServerName;
Integrated security=true" />
<sessionState mode="SQLServer"
sqlConnectionString="data source=SQLServerName;
Integrated security=true" />
c:\> OSQL S SQLServerName E <InstallSqlState.sql
c:\> OSQL S SQLServerName E <InstallSqlState.sql
1
1 1
2
2 2
***
Para almacenar variables de aplicacin y de sesin en una base de datos SQL
Server o en un servidor de estado, debemos seguir los siguientes pasos:
1. Configurar el estado de sesin en el archivo Web.config del servidor Web.
2. Configurar el servidor SQL Server o el servidor de estado.
En el archivo Web.config, debemos modificar la configuracin para establecer
el atributo mode desessionstate a sqlserver o stateserver. A confinuacin,
debemos modificar el atributo sqlconnectionstring para identificar el nombre
del equipo que ejecuta SQL Server o el servidor de estado.
Por ejemplo, si se utiliza el modo sqlserver con seguridad integrada, debemos
establecer el estado de sesin en Web.config como muestra el siguiente cdigo:
<sessionState mode="SQLServer"
sqlConnectionString="data source=SQLServerName;
Integrated security=true" />
Para configurar el servidor SQL Server, debemos utilizar la herramienta desde
lnea de comandos que proporciona SQL Server, OSQL.exe.
OSQL.exe instala la base de datos denominada ASPState, que se utiliza para
guardar las variables de aplicacin y de sesin.
Para instalar la base de datos ASPState utilizado seguridad integrada, utilizar la
siguiente sintaxis:
Introduccin
Configura el estado de
sesin en el archivo
Web.config de nuestro
servidor Web ASP.NET
Configurar el servidor
SQL Server
28 Administracin del estado
c:\> OSQL S SQLServerName -E <InstallSqlState.sql
Las opciones del comando OSQL son sensibles a maysculas.
Si se utiliza un servidor de estado en lugar de un servidor SQL Server, se debe
iniciar el servicio ASP.NET de Windows en lugar de instalar una base de datos.
Importante
Administracin del estado 29
Leccin: sesiones con y sin cookies
Utilizar cookies para almacenar datos de sesin
Prctica dirigida por el instructor: utilizar variables y
cookies
Recuperar informacin deuna cookie
Uso de sesiones que no utilizan cookies
Configurar sesiones queno utilizan cookies
***
Las cookies son un medio por el cual la aplicacin Web que se ejecuta en el
servidor Web puede hacer que un cliente devuelva informacin al servidor Web
con cada solicitud HTTP. La devolucin de informacin puede utilizarse para
mantener el estado con el cliente entre mltiples peticiones. Las cookies se
envan al cliente como parte del encabezado HTTP en una solicitud del cliente,
o se envan en una respuesta del servidor.
En esta leccin, estudiaremos cmo utilizar cookies para almacenar datos de
sesin, y cmo recuperar esos datos de una cookie. Tambin estudiaremos las
sesiones que no utilizan cookies y cmo se establecen.
En esta leccin, aprenderemos a:
Utilizar cookies para almacenar datos de sesin.
Recuperar informacin de una cookie.
Describir sesiones que no utilizan cookies.
Establecer una sesin que no utiliza cookies.
Introduccin
Objetivos de la leccin
30 Administracin del estado
Utilizar cookies para almacenar datos de sesin
Crear una cookie:
La cookie contiene informacin sobre el nombre de dominio
HttpCookie objCookie = new HttpCookie("myCookie");
DateTime now = DateTime.Now;
objCookie.Values.Add("Time", now.ToString());
objCookie.Values.Add("ForeColor", "White");
objCookie.Values.Add("BackColor", "Blue");
Response.Cookies.Add(objCookie);
HttpCookie objCookie = new HttpCookie("myCookie");
DateTime now = DateTime.Now;
objCookie.Values.Add("Time", now.ToString());
objCookie.Values.Add("ForeColor", "White");
objCookie.Values.Add("BackColor", "Blue");
Response.Cookies.Add(objCookie);
HttpCookie objCookie = new HttpCookie("myCookie");
DateTime now = DateTime.Now;
objCookie.Values.Add("Time", now.ToString());
objCookie.Values.Add("ForeColor", "White");
objCookie.Values.Add("BackColor", "Blue");
objCookie.Expires = now.AddHours(1);
Response.Cookies.Add(objCookie);
HttpCookie objCookie = new HttpCookie("myCookie");
DateTime now = DateTime.Now;
objCookie.Values.Add("Time", now.ToString());
objCookie.Values.Add("ForeColor", "White");
objCookie.Values.Add("BackColor", "Blue");
objCookie.Expires = now.AddHours(1);
Response.Cookies.Add(objCookie);
Paracrear unacookie
persistente, especificar
el tiempodeexpiracin
Set-Cookie: Username=John+Chen; path=/;
domain=microsoft.com;
Expires=Tuesday, 01-Feb-05 00.00.01 GMT
Set-Cookie: Username=John+Chen; path=/;
domain=microsoft.com;
Expires=Tuesday, 01-Feb-05 00.00.01 GMT
***
Podemos crear cookies utilizando la propiedad Cookies del objeto Response y
la clase Request. La propiedad Cookies representa una coleccin de cookies y
es una instancia de la clase HttpCookieCollection.
El siguiente cdigo crea una nueva cookie denominada myCookie:
Dim objCookie As New HttpCookie("myCookie")
Dim now As DateTime = DateTime.Now
HttpCookie objCookie = new HttpCookie("MyCookie");
DateTime now = DateTime.Now;
El siguiente cdigo agrega un par de claves y valores:
objCookie.Values.Add("Time", now.ToString())
objCookie.Values.Add("ForeColor", "White")
objCookie.Values.Add("BackColor", "Blue")
objCookie.Values.Add("Time", now.ToString());
objCookie.Values.Add("ForeColor", "White");
objCookie.Values.Add("BackColor", "Blue");
El siguiente cdigo establece en una hora el tiempo de expiracin de la cookie:
objCookie.Expires = now.AddHours(1)
Introduccin
Crear una cookie
Visual Basic .NET
C#
Visual Basic .NET
C#
Hacer una cookie
persistente
Visual Basic .NET
C#
Administracin del estado 31
objCookie.Expires = now.AddHours(1);
32 Administracin del estado
Si no agregamos el cdigo anterior cuando creamos una cookie, sta ser una
cookie temporal. La cookie temporal se aade a la memoria del navegador, pero
no se almacenar en un archivo. Cuando el usuario cierra el explorador, la
cookie se elimina de la memoria.
Agregar el cdigo sobre el tiempo de expiracin convierte la cookie temporal
en una cookie persistente. La cookie persistente se guarda en el disco duro. Con
una cookie persistente, si el usuario cierra el explorador y lo abre de nuevo,
puede acceder a la misma pgina Web otra vez hasta que la cookie persistente
expire. La expiracin de la cookie persistente depende del tiempo de expiracin
establecido en el cdigo. En el cdigo anterior, la cookie persistente se
eliminar transcurrida una hora.
Frecuentemente, las cookies persistentes a menudo se utilizan para
almacenar informacin sobre nombres e identificadores de usuario para que el
servidor pueda identificar a los usuarios cuando regresen al sitio Web.
El siguiente cdigo agrega la nueva cookie a la coleccin de cookies del objeto
Response:
Response.Cookies.Add(objCookie)
Response.Cookies.Add(objCookie);
Supongamos que deseamos crear una cookie, denominada Username, que
contiene el nombre de un visitante a nuestro sitio Web. Para crear esta cookie,
el servidor Web enviar un encabezado HTTP como muestra el siguiente
cdigo:
Set-Cookie: Username=John+Chen; path=/; domain=microsoft.com;
Expires=Tuesday, 01-Feb-05 00.00.01 GMT
El encabezado del cdigo de ejemplo anterior manda al navegador que agregue
una entrada a su archivo cookie. El explorador agrega la cookie, denominada
Username, con el valor J ohn Chen.
El atributo domain del cdigo de ejemplo anterior limita el dominio dnde el
navegador puede enviar la cookie. En el cdigo de ejemplo anterior, la cookie
nicamente puede enviarse al sitio Web Microsoft.com. La cookie nunca se
enviar a ningn otro sitio Web de Internet.
Despus de que el servidor Web cree una cookie, el navegador la devuelve en
cada peticin que realiza a ese sitio Web. El explorador devuelve la cookie en
un encabezado similar al siguiente:
Cookie: Username: John+Chen
Las cookies que se almacenan en formato de archivo de texto son las cookies
persistentes. De forma predeterminada, este archivo se almacena en la carpeta
\Documents and Settings\NombreUsuario\Cookies.
Cuando las cookies persistentes se almacenan utilizando Internet Explorer, el
formato del archivo de texto es:
NombreUsuario@NombreDominio.txt
Nota
Visual Basic .NET
C#
Cmo funcionan las
cookies
Administracin del estado 33
Prctica dirigida por el instructor: utilizar variables y cookies
Los estudiantes:
Aprendern a utilizar las variables de
aplicacin y de sesin, y las cookies
persistentes, para almacenar informacin
del usuario
Tiempo: 15Minutos
***
En esta prctica, veremos cmo se utilizan las variables de aplicacin y de
sesin, y las cookies persistentes, para almacenar informacin del usuario.
Iniciar sesin en la aplicacin Web
1. Abrir Internet Explorer e ir a:
http://mquinaprofesor/Mod14VB/default.aspx o
http://mquinaprofesor/Mod14CS/default.aspx.
2. Escribir nuestro nombre en el cuadro de texto, seleccionar un color del
cuadro de lista desplegable y hacer clic en Submit.
Seremos redireccionados a results.aspx, que muestra nuestro nombre, color
seleccionado y la fecha y hora en que accedimos por ltima vez a
default.aspx. results.aspx tambin muestra el nmero de visitantes.
3. Actualizar el explorador varias veces.
Cada actualizacin produce un aumento en el nmero de visitantes, pero
nuestro nombre y seleccin de color permanecen.
4. Cerrar Internet Explorer.
5. Volver a abrir Internet Explorer e ir a:
http://mquinaprofesor/Mod14VB/results.aspx o
http://mquinaprofesor/Mod14CS/results.aspx.
Aparece nuestro nombre, pero el color que escogimos anteriormente no se
muestra. La fecha y hora de nuestro ltimo acceso a default.aspx tambin se
muestra.
Introduccin
Probar la funcionalidad
34 Administracin del estado
6. Cerrar Internet Explorer.
Por qu se recuerda nuestro nombre cuando volvemos a visitar el sitio,
pero no el color seleccionado?
_____________________________________________________________
_____________________________________________________________
Cmo hace la pgina el seguimiento del nmero de visitantes?
_____________________________________________________________
_____________________________________________________________
Visualizar el cdigo
1. En el cuadro de direccin de Windows Explorer, escribir:
\\mquinaprofesor\c$\inetpub\wwwroot\mod14VB o
\\mquinaprofesor\c$\inetpub\wwwroot\mod14CS
Y pulsar ENTER.
2. Abrir la pgina de cdigo subyacente de la pgina Default.aspx.
Qu dos acciones se producen en el procedimiento de evento
btnSubmit_Click?
_____________________________________________________________
_____________________________________________________________
3. En Windows Explorer, hacer doble clic en results.aspx.vb o results.aspx.cs
para abrir el archivo de pgina de cdigo subyacente results.aspx en
Visual Studio .NET.
En el procedimiento de evento Page_Load, cmo se almacena el nmero
de visitas en la pgina almacenada?
_____________________________________________________________
_____________________________________________________________
Por qu el cdigo se ubica en una instruccin If en el procedimiento de
evento Page_Load?
_____________________________________________________________
_____________________________________________________________
4. Cerrar Visual Studio .NET.
Administracin del estado 35
Visualizar la cookie
1. En Windows Explorer, ir al siguiente directorio del equipo:
c:\Documents and Settings\Student\Cookies
<<Note>>
Si se ha iniciado sesin con un nombre de usuario distinto de Student,
ir a la carpeta Cookies de esa cuenta de usuario.
2. Hacer doble clic para abrir la cookie denominada
student@equipoinstructor[n].txt, siendo n un nmero de instancia.
Qu informacin podemos encontrar en esta cookie?
____________________________________________________________
____________________________________________________________
3. Cerrar Notepad y Windows Explorer.
Nota
36 Administracin del estado
Recuperar informacin de una cookie
Leer la cookie
Recuperar valores de la cookie
lblTime.Text = objCookie.Values("Time")
lblTime.ForeColor = System.Drawing.Color.FromName _
(objCookie.Values("ForeColor"))
lblTime.BackColor = System.Drawing.Color.FromName _
(objCookie.Values("BackColor"))
lblTime.Text = objCookie.Values("Time")
lblTime.ForeColor = System.Drawing.Color.FromName _
(objCookie.Values("ForeColor"))
lblTime.BackColor = System.Drawing.Color.FromName _
(objCookie.Values("BackColor"))
Dim objCookie As HttpCookie = Request.Cookies("myCookie")
Dim objCookie As HttpCookie = Request.Cookies("myCookie")
HttpCookie objCookie = Request.Cookies["myCookie"];
HttpCookie objCookie = Request.Cookies["myCookie"];
lblTime.Text = objCookie.Values["Time"];
lblTime.ForeColor = System.Drawing.Color.FromName
(objCookie.Values["ForeColor"]);
lblTime.BackColor = System.Drawing.Color.FromName
(objCookie.Values["BackColor"]);
lblTime.Text = objCookie.Values["Time"];
lblTime.ForeColor = System.Drawing.Color.FromName
(objCookie.Values["ForeColor"]);
lblTime.BackColor = System.Drawing.Color.FromName
(objCookie.Values["BackColor"]);
***
Recuperar informacin de una cookie implica leer una cookie y recuperar los
pares clave/valor de la misma.
El cliente devuelve al servidor una cookie en un encabezado HTTP "Cookie:".
En este encabezado pueden aparecer mltiples cookies, separadas por punto y
coma. Para leer una cookie existente, podemos acceder a la coleccin de
cookies del objeto Request, como muestra el siguiente cdigo:
Dim objCookie As HttpCookie = Request.Cookies("myCookie")
HttpCookie objCookie = Request.Cookies["myCookie"];
El siguiente cdigo muestra los valores que deben recuperarse de una cookie:
lblTime.Text = objCookie.Values("Time")
lblTime.ForeColor = System.Drawing.Color.FromName _
(objCookie.Values("ForeColor"))
lblTime.BackColor = System.Drawing.Color.FromName _
(objCookie.Values("BackColor"))
lblTime.Text = objCookie.Values["Time"];
lblTime.ForeColor = System.Drawing.Color.FromName
(objCookie.Values["ForeColor"]);
lblTime.BackColor = System.Drawing.Color.FromName
(objCookie.Values["BackColor"]);
Introduccin
Leer una cookie
Visual Basic
C#
Recuperar valores de la
cookie
Visual Basic .NET
C#
Administracin del estado 37
Uso de sesiones que no utilizan cookies
Cada sesin activa estidentificada y se realiza su
seguimiento utilizando IDsde sesin
Los IDsde sesin secomunican entre peticiones
cliente-servidor utilizando una cookieHTTP o
incluyndolos en laURL
Sesiones que no utilizan cookies
La informacin de ID de sesin estcodificada en URLs
No pueden utilizar URLsabsolutas
La mayora de navegadores limitan el tamao de la URL
a 255 caracteres, lo cual limita el uso de IDspara las
sesiones que no utilizan cookies
http://server/(h44a1e55c0breu552yrecobl)/page.aspx
http://server/(h44a1e55c0breu552yrecobl)/page.aspx
***
Cada sesin activa est identificada y se realiza su seguimiento utilizando un
identificador de sesin SessionID. El SessionID se comunica entre peticiones
cliente-servidor utilizando una cookie HTTP o incluyndolo en la URL. De
forma predeterminada, SessionID se almacena en cookies.
Sin embargo, los usuarios pueden deshabilitar cookies mediante una
configuracin en sus navegadores. Si la cookie no puede agregarse al navegador
de un usuario, cada peticin que realice el usuario iniciar una nueva sesin de
usuario. Los datos de sesin asociados a ese usuario se pierden cuando se
solicita una nueva pgina.
El marco de trabajo de las pginas ASP.NET incluye una opcin que habilita
sesiones que no utilizan cookies. Las sesiones que no utilizan cookies permiten
aprovechar el estado de sesin incluso con navegadores que tienen
deshabilitado el soporte de cookies.
Cuando un usuario realiza la primera peticin a un sitio Web teniendo
habilitado sesiones que no utilizan cookies, la URL que se utiliza para la
peticin se modifica automticamente para incluir el SessionID del usuario. Por
ejemplo, cuando un usuario solicita http://server/page.aspx, la solicitud se
modifica automticamente a:
http://server/(h44a1e55c0breu552yrecobl)/page.aspx
la parte de la URL que aparece en parntesis es el SessionID del usuario actual.
Despus de que el SessionID se incluya en la URL de la peticin de la primera
pgina, el SessionID hace seguimiento del usuario durante su visita al sitio
Web.
Introduccin
Sesiones que no utilizan
cookies
38 Administracin del estado
Existen algunas limitaciones en el uso sesiones que no utilizan cookies:
Si decidimos utilizar sesiones que no utilizan cookies, no podemos utilizar
URLs absolutas para los enlaces entre pginas. El sitio Web debe disearse
de forma que cada enlace utilice una URL relativa a la pgina actual.
La mayora de navegadores limitan el tamao de la URL a 255 caracteres.
Limitacin de las
sesiones que no utilizan
cookies
Administracin del estado 39
Configuracin de sesiones que no utilizan cookies
El estado de sesin se configura en la seccin
<SessionState>de Web.config
Configurar cookieless=true
<sessionState cookieless="true" />
<sessionState cookieless="true" />
***
Para habilitar sesiones que no utilizan cookies, es necesario modificar un nico
atributo del archivo Web.config.
En la seccin <sessionstate> del archivo Web.config, el atributo cookieless
est establecido al valor true. Para habilitar sesiones que no utilizan cookies, lo
nico que debemos hacer es establecer este valor, como muestra el siguiente
cdigo:
<sessionState cookieless="true" />
Introduccin
Configurar una sesin
que no utiliza cookies
ndice
Descripcin 2
Leccin: uso del objeto Cache 3
Leccin: uso de la cach de resultados de ASP.NET 15
Leccin: configurar una aplicacin Web ASP.NET 25
Leccin: implementar una aplicacin Web ASP.NET 43
Configurar, optimizar e implementar
una aplicacin Web con Microsoft
ASP.NET
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 2
Descripcin
Uso del objeto Cache
Uso de la cachde resultados ASP.NET
Configurar una aplicacin Web ASP.NET
Implementar una aplicacin Web ASP.NET
*****************************
Una vez finalizado el desarrollo de nuestra aplicacin Web con Microsoft
ASP.NET, podemos implementarla en un servidor de produccin. Sin embargo,
antes de la implementacin, podramos optimizar la aplicacin Web para
mejorar su rendimiento.
Podemos optimizar e implementar a continuacin la aplicacin Web:
Configurando el objeto Cache y la cach de resultados para optimizar los
tiempos de respuesta de la aplicacin Web.
Organizando la configuracin de la aplicacin en los archivos
Machine.config y Web.config para soportar y proteger el sitio Web.
Seleccionando los archivos necesarios para ejecutar el sitio Web y
copindolos en el servidor de produccin.
En este mdulo, aprenderemos a:
Utilizar el objeto Cache para almacenar informacin.
Utilizar la cach de resultados ASP.NET para almacenar pginas Web y
fragmentos de pginas Web.
Configurar una aplicacin Web ASP.NET utilizando los archivos
Machine.config y Web.config.
Implementar una aplicacin Web ASP.NET.
Introduccin
Objetivos
3 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET
Leccin: uso del objeto Cache
Ques el objeto Cache?
Ventajas de utilizar el objeto Cache
Cmo utilizar el objeto Cache
Eliminar elementos del objeto Cache
Demostracin: utilizar el objeto Cache
*****************************
Una de las formas ms eficaces de incrementar el rendimiento de una aplicacin
Web ASP.NET es utilizar el objeto Cache de ASP.NET. El objeto Cache
permite ubicar elementos en memoria del servidor para que puedan recuperarse
rpidamente. Sin embargo, si se cargan demasiados elementos en el objeto
Cache se pueden retrasar los tiempos de respuesta al reducirse la memoria
disponible en el servidor.
En esta leccin, estudiaremos cmo configurar el objeto Cache para optimizar
los tiempos de respuesta de una aplicacin Web.
En esta leccin, aprenderemos a:
Explicar qu es un objeto Cache.
Explicar las ventajas y los inconvenientes de utilizar un objeto Cache.
Utilizar un objeto Cache para almacenar y recuperar elementos utilizados
por nuestra aplicacin Web.
Eliminar elementos de un objeto Cache transcurrido un periodo de tiempo,
o cuando cambie el elemento, para limitar el uso de memoria.
Introduccin
Objetivos de la leccin
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 4
Qu es el objeto Cache?
Un objeto utilizado para almacenar informacin
Un objeto Cachepor aplicacin Web
Una alternativa a las variables de aplicacin
No se utiliza para almacenar informacin en variables
de sesin
Utiliza pares clave-valor para almacenar y recuperar
elementos
Cache("myKey") = myValue
Cache("myKey") = myValue
Cache["myKey"] = myValue;
Cache["myKey"] = myValue;
*****************************
Un aspecto con el que nos encontraremos cuando generemos aplicaciones Web
de alto rendimiento es la necesidad de evitar duplicidad. Un objeto Cache
permite almacenar en cach elementos en memoria la primera vez que son
solicitados, y utilizar la copia en cach para posteriores peticiones. El uso de la
copia en cach evita volver a crear informacin que satisfizo una solicitud
anterior, especialmente informacin que exige un tiempo significativo del
procesador en el servidor cada vez que se crea.
Adems de almacenar en la cach elementos individuales, como los resultados
computacionales en el objeto Cache, ASP.NET ofrece una cach de resultados
que puede utilizarse para almacenar pginas Web y controles de usuario. El
objeto Cache y la cach de resultados son objetos distintos con roles y
propiedades nicos.
ASP.NET proporciona un motor de cach completo que puede utilizarse para
almacenar y recuperar porciones de informacin. El objeto Cache no tiene
informacin sobre el contenido de los elementos que contiene. El objeto Cache
simplemente guarda una referencia a esos objetos y proporciona un proceso
para realizar el seguimiento de sus dependencias y establecer las polticas de
expiracin.
El objeto Cache tambin proporciona un mtodo para pasar valores entre
pginas de la misma aplicacin Web. Los mtodos de cach implementan un
bloqueo automtico; por tanto, existe seguridad al acceder a los valores
simultneamente desde ms de una pgina.
El proceso para utilizar el objeto Cache es:
Introduccin
Un objeto utilizado para
almacenar informacin
Cmo funciona el objeto
Cache
5 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET
1. Una pgina solicita un elemento que se ha identificado como almacenado en
el objeto Cache.
2. ASP.NET comprueba el objeto Cache y utiliza la versin en cach si est
disponible.
3. Si no hay una versin en cach disponible, ASP.NET vuelve a crear el
elemento, lo utiliza y lo almacena en el objeto Cache para utilizarlo en el
futuro.
ASP.NET crea un nico objeto Cache por cada aplicacin Web. Los elementos
almacenados en el objeto Cache son exclusivos para la aplicacin Web y otras
aplicaciones Web ejecutndose en el mismo servidor o en otros servidores no
pueden acceder a ellos. En consecuencia, el uso del objeto Cache para
incrementar el rendimiento de la aplicacin Web no es escalable por encima del
nivel de una nica aplicacin Web.
El ciclo de vida de la cach es el mismo que el de la aplicacin Web. Cuando la
aplicacin Web se reinicia, la cach vuelve a crearse.
El objeto Cache puede utilizarse para almacenar informacin que tambin
podra almacenarse en variables de aplicacin. En lugar de volver a crear el
valor cada vez que lo utilizamos, cualquier pgina de la aplicacin Web puede
acceder a un valor en la cach.
El objeto Cache no puede utilizarse para almacenar informacin que se
encuentra en variables de sesin. Las variables de sesin pueden almacenarse
en cookies, la URL (Uniform Resource Locator) de la pgina, o el control
ViewState oculto.
Para ms informacin sobre las variables de aplicacin y de sesin,
consultar el Mdulo Administracin del estado.
El objeto Cache utiliza pares clave-valor para almacenar y recuperar objetos.
La clave es la cadena de la clave de la cach utilizada para referenciar el objeto.
El valor es el objeto a almacenar en la cach. En el caso ms sencillo, ubicar un
elemento en la cach y recuperarlo es exactamente igual que agregar un
elemento a un diccionario.
Agregar un elemento a un objeto Cache:
Cache("mykey") = myValue
Cache["mykey"] = myValue;
Recuperar un elemento de un objeto Cache:
myValue = Cache("myKey")
myValue = Cache["myKey"];
Un objeto Cache por
aplicacin Web
Almacenar variables
Nota
Utiliza pares clave-valor
Microsoft
Visual Basic .NET
C#
Visual Basic .NET
C#
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 6
Ventajas de utilizar el objeto Cache
Es ms rpido que crear unnuevo objeto paracada
peticin
Soporta el bloqueo interno
Administracin automtica de los recursos de cach
Soporta funciones callback
Soporta el borradobasadoen dependencias
*****************************
El objeto Cache proporciona una sencilla interfaz de diccionario que permite
insertar valores fcilmente y recuperarlos posteriormente. El uso del objeto
Cache para almacenar valores tiene varias ventajas.
Es mucho ms rpido recuperar un elemento almacenado en memoria que
volver a generarlo. Por ejemplo, un DataSet relleno con datos de un equipo
ejecutando Microsoft SQL Server
Conservar Eliminar
.vbproj .csproj
.vbproj.webinfo .csproj.webinfo
.resx .resx
.dll .dll
.aspx .aspx
directorio \bin y contenido directorio \bin y contenido
.aspx.vb .aspx.cs
.csproj .vbproj
Global.asax Global.asax
.exe .exe
.ascx .ascx
.xml .xml
Web.config Web.config
49 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET
Compartir ensamblados en la cach de ensamblados global
La cach de ensamblados global proporciona el
almacenamiento para los ensamblados que deben
compartirse
Cach para cdigo a nivel de equipo
Los archivos DLL no estn registrados, por ello, no se
comparten fcilmente entre aplicaciones Web
*****************************
Los equipos que tengan instalado el .NET Framework tambin tienen una cach
de cdigo a nivel de equipo denominada Cach de Ensamblados Global (Global
Assembly Cache - GAC). Despus de implementar nuestra aplicacin Web en
un servidor Web en produccin, podemos utilizar la GAC para compartir
cdigo entre las aplicaciones Web en el servidor Web.
Aunque el objeto Cache de ASP.NET se utiliza para el almacenamiento de
informacin a corto plazo de una aplicacin Web, la GAC puede utilizarse para
compartir cdigo en todo el servidor Web. La GAC almacena ensamblados
diseados especficamente para ser compartidos por varias aplicaciones Web en
un servidor. Un ensamblado es una coleccin de recursos en un nico archivo
(por ejemplo, un archivo dll).
Existen varios motivos para instalar un ensamblado en la GAC, incluyendo:
Ubicacin compartida
Los ensamblados utilizados por mltiples aplicaciones pueden incluirse en
la GAC.
Seguridad de archivos
La GAC se encuentra en el directorio WINNT, que normalmente tiene
restricciones de acceso a su contenido.
Versionado lado a lado
Mltiples copias de ensamblados con el mismo nombre, pero con diferente
informacin de versin, pueden mantenerse en la GAC.
Introduccin
Almacenamiento para
ensamblados que deben
compartirse
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 50
Actualizar la aplicacin Web
Copiar o FTP archivos para actualizar la aplicacin
Web
No es necesario detener y volver a iniciar IIS
Los archivos .dll pueden actualizarse mientras el sitio
sigue ejecutndose
La cachde resultadosprotege a los usuarios
existentes
*****************************
Una vez que nuestra aplicacin Web se est ejecutando en un directorio en
produccin, podemos actualizar la aplicacin Web en cualquier momento sin
necesidad de volver a iniciar el servidor, IIS o la aplicacin Web.
Con ASP.NET, cuando tenemos una nueva versin de la aplicacin Web,
nicamente necesitamos copiar los nuevos archivos en el directorio,
sobrescribiendo los archivos existentes. Cuando el siguiente usuario se conecta
a nuestra aplicacin Web, recibe los archivos ms actualizados. A diferencia de
versiones anteriores de Active Server Pages (ASP), actualizar un sitio Web
ASP.NET no requiere que detengamos y volvamos a iniciar IIS.
Si deshabilitamos el almacenamiento en cach de resultados de pginas para los
formularios Web Forms, los usuarios seguirn recibiendo las versiones antiguas
de las pginas hasta que venza la cach. Cuando expiren las pginas en cach,
los usuarios recibirn una versin actualizada de esa pgina.
Introduccin
Copiar o FTP archivos
La cach de resultados
protege a los usuarios
existentes
Prctica A: Configurar, optimizar e implementar una
aplicacin Web con Microsoft ASP.NET
Medical
Medical.aspx
Medical
Medical.aspx
Benefits
Home Page
Default.aspx
Benefits
Home Page
Default.aspx
Life Insurance
Life.aspx
Life Insurance
Life.aspx
Retirement
Retirement.aspx
Retirement
Retirement.aspx
Dental
Dental.aspx
Dental
Dental.aspx
Dentists
Doctors
Doctors.aspx
Doctors
Doctors.aspx
Doctors
Logon Page
Login.aspx
Logon Page
Login.aspx
Registration
Register.aspx
Registration
Register.aspx
Coho
Winery
Prospectus
Prospectus.aspx
Prospectus
Prospectus.aspx
XML Web
Service
dentalService1.asmx
XML Web
Service
dentalService1.asmx
Page Header
Header.ascx
Page Header
Header.ascx
ASPState
tempdb
LabWeb
Application
User Control
namedate.ascx
User Control
namedate.ascx
Menu
Component
Class1.vb or Class1.cs
Menu
Component
Class1.vb or Class1.cs
XML
Files
Web.
config
*****************************
En este laboratorio, aprenderemos a:
Utilizar el objeto Cache para almacenar en cach un DataSet.
Utilizar propiedades dinmicas.
Utilizar la cach de resultados de pgina para almacenar en la cach un
formulario Web Form y un control de usuario.
Utilizar la propiedad VaryByParam para manipular la cach de pginas.
Implementar una aplicacin Web Microsoft ASP.NET en un servidor
remoto.
Este laboratorio se centra en los conceptos de este mdulo. Por ello,
podra no cumplir las recomendaciones de seguridad de Microsoft.
Para trabajar en este laboratorio, es necesario tener:
Conocimientos sobre cmo utilizar el objeto Cache.
Conocimientos sobre cmo funciona la cach de resultados de pgina.
Conocimientos sobre el uso de Internet Information Services (IIS).
Objetivos
Nota
Requisitos previos
Coho Winery ofrece varios beneficios a sus empleados. En los laboratorios de
este curso, crearemos un sitio Web que permita a los empleados seleccionar y
configurar los beneficios que elijan.
En este laboratorio,
Utilizaremos el objeto Cache para almacenar en cach un DataSet.
Utilizaremos la cach de resultados para almacenar en cach un formulario
Web Form y un control de usuario.
Utilizaremos propiedades dinmicas para almacenar la URL (Uniform
Resource Locator) de un servicio Web XML.
Implementar el sitio Web LabApplication en un servidor remoto.
Escenario
Tiempo estimado para
completar el laboratorio:
90 minutos
Ejercicio 0
Configuracin del laboratorio
Para realizar este laboratorio, es necesario haber creado el proyecto de la
aplicacin Web Benefits y el proyecto de la biblioteca de clases BenefitsList.
Estos proyectos pueden haberse creado utilizando Visual Basic .NET o
Microsoft Visual C#
.NET.
Si no se han creado estos proyectos, realizar los siguientes pasos:
Crear la solucin LabApplication
Realizar este procedimiento nicamente si no se ha creado un
archivo de solucin LabApplication.
1. Utilizando Visual Studio .NET, crear una nueva solucin en blanco
denominada LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Solucin en
blanco.
b. En el cuadro de dilogo Nuevo proyecto, escribir LabApplication en el
cuadro de texto Nombre y hacer clic en Aceptar.
Crear el proyecto Benefits
Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto Benefits, o si se ha eliminado.
1. Crear un nuevo proyecto de aplicacin Web ASP.NET, denominado
BenefitsVB o BenefitsCS, en la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual Basic o Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Aplicacin Web ASP.NET,
establecer la ubicacin en http://localhost/BenefitsVB para el proyecto
Visual Basic .NET o en http://localhost/BenefitsCS para el proyecto
Visual C#.
d. Hacer clic en Agregar a Solucin, y hacer clic en Aceptar.
Cuando se agregan proyectos a la solucin, es importante el
uso de maysculas en el nombre del proyecto. Probablemente, utilizaremos
algunos formularios Web Forms ya generados en ste y en otros
laboratorios, por ello, debemos verificar que hemos escrito con maysculas
el nombre del proyecto Benefits.
Importante
Importante
Precaucin
Actualizar el proyecto Benefits
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
3. Buscar los archivos de proyecto:
Ir a la carpeta VB\Starter\BenefitsVB.
Ir a la carpeta CS\Starter\BenefitsCS.
Estas carpetas pueden encontrarse dentro del fichero labs13.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente Benefits, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de sobrescribir o recargar los archivos.
Crear la biblioteca de clases BenefitsList
Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto BenefitsList, o si se ha eliminado.
1. Crear un nuevo proyecto de biblioteca de clases.
Crear un nuevo proyecto de biblioteca de clases Visual Basic .NET con el
nombre BenefitsListVB, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual Basic.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListVB.
d. Hacer clic en Agregar a solucin, y clic en Aceptar.
Crear un nuevo proyecto de biblioteca de clases Visual C#.NET con el
nombre BenefitsListCS, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListCS.
a. Hacer clic en Agregar a solucin, y clic en Aceptar.
Verificar que se han escrito correctamente las maysculas del
proyecto BenefitsList.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Importante
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Precaucin
Actualizar el proyecto BenefitsList
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
3. Ir al proyecto BenefitsList.
Ir a la carpeta VB\Starter\BenefitsListVB.
Ir a la carpeta CS\Starter\BenefitsListCS.
Estas carpetas pueden encontrarse dentro del fichero labs13.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente BenefitsList, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de si sobrescribir o recargar los archivos.
Crear una referencia al componente BenefitsList del proyecto Benefits
1. En el proyecto Benefits de la solucin LabApplication, completar los
siguientes pasos para agregar una referencia al componente BenefitsList
que acabamos de crear:
a. Hacer clic con el botn derecho en el proyecto BenefitsVB o
BenefitsCS en el Explorador de soluciones y hacer clic en Agregar
referencia.
b. En el cuadro de dilogo Agregar referencia, en la pestaa Proyectos,
hacer doble clic en el proyecto BenefitsListVB o BenefitsListCS.
c. En la lista Componentes seleccionados, seleccionar el componente
BenefitsListVB o BenefitsListCS, y hacer clic en Aceptar.
El componente se agrega a la carpeta Referencias en el Explorador de
soluciones.
Crear el Servicio Web XML Dental
Realizar este procedimiento nicamente si no se ha creado
anteriormente el proyecto DentalService, o si se ha eliminado.
1. Crear un nuevo proyecto de Servicio Web XML, denominado
DentalServiceVB o DentalServiceCS, y agregarlo a la solucin
LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual Basic.
c. En la lista Plantillas, hacer clic en Servicio Web ASP.NET, y
establecer la ubicacin en http://localhost/DentalServiceVB o en
http://localhost/DentalServiceCS.
d. Hacer clic en Agregar a solucin, y clic en Aceptar.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Importante
Verificar que se han utilizado correctamente las maysculas en
el proyecto DentalServiceVB.
Actualizar el proyecto DentalService
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
DentalServiceVB o DentalServiceCS, seleccionar Agregar, y hacer clic en
Agregar elemento existente.
3. Buscar la carpeta DentalService:
Ir a VB\Starter\DentalServiceVB.
Ir a CS\Starter\DentalServiceCS.
Estas carpetas pueden encontrarse dentro del fichero labs13.zip
4. Agregar archivos al proyecto:
En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente DentalServiceVB, hacer clic en Todos los archivos (*.*).
En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente DentalServiceCS, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de esta carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de sobrescribir o recargar los archivos.
7. Generar el servicio Web XML DentalService haciendo clic con el botn
derecho en el proyecto DentalService en el Explorador de soluciones y
hacer clic en Generar.
Agregar una referencia Web en el proyecto Benefits al servicio Web
DentalService
1. En el proyecto Benefits de la solucin LabApplication, realizar los
siguientes pasos para agregar una referencia Web al servicio Web XML
DentalService:
a. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsVB o BenefitsCS y clic en Agregar referencia Web.
b. En el cuadro de texto Direccin, escribir:
http://localhost/DentalServiceVB/DentalService.asmx
http://localhost/DentalServiceCS/DentalService.asmx
Pulsar ENTER. Se mostrar la referencia Web DentalService.
c. Hacer clic en Agregar referencia.
La referencia Web se agrega al proyecto en la carpeta Referencias Web.
2. En el Explorador de soluciones, expandir Referencias Web, hacer clic con
el botn derecho en localhost, y seleccionar Cambiar nombre.
3. Escribir DentalWebRef, y pulsar ENTER.
4. Generar la solucin haciendo clic en Generar solucin en el men
Generar.
Precaucin
Visual Basic .NET
Visual C#
Visual Basic .NET
Visual C#
Visual Basic .NET
Visual C#
Instalar y configurar las bases de datos del estado de sesin
1. En el men Inicio, seleccionar Todos los programas, seleccionar
Accesorios, y hacer clic en Lnea de comandos.
Se abre una ventana de comandos.
2. En la lnea de comandos, escribir el siguiente comando, siendo version la
ltima versin del .NET Framework instalada en el equipo, y pulsar
ENTER:
cd\Windows\Microsoft.NET\Framework\version\
La lnea de comandos cambia al nuevo directorio.
3. En la lnea de comandos, escribir el siguiente comando, y pulsar ENTER:
OSQL S localhost E <InstallSqlState.sql
La ventana de comandos muestra una serie de nmeros y mensajes, y
regresa a la lnea de comandos. Se han restablecido las bases de datos
ASPState y tempdb.
4. Cerrar la lnea de comandos y abrir Windows Explorer.
5. Ir al siguiente directorio:
VB\Starter
CS\Starter
Estas carpetas pueden encontrarse dentro del fichero labs13.zip
6. Hacer doble clic en Lab13.bat.
Este archivo de proceso por lotes ejecuta una consulta SQL que configura la
seguridad para las bases de datos ASPState y tempdb.
7. Cerrar Windows Explorer.
Visual Basic .NET
Visual C#
Ejercicio 1
Utilizar el objeto Cache
En este ejercicio, utilizaremos el objeto Cache para almacenar en la cach el
objeto DataSet doctors. Colocar un DataSet en la cach reduce el nmero de
veces que un formulario Web Form necesita conectar a la fuente de datos, en
este caso Microsoft SQL Server
.NET.
Si no se han creado estos proyectos, realizar los siguientes pasos:
Crear la solucin LabApplication
Realizar este procedimiento nicamente si no se ha creado un
archivo de solucin LabApplication.
1. Utilizando Visual Studio .NET, crear una nueva solucin en blanco
denominada LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Solucin en
blanco.
b. En el cuadro de dilogo Nuevo proyecto, escribir LabApplication en el
cuadro de texto Nombre y hacer clic en Aceptar.
Crear el proyecto Benefits
Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto Benefits, o si se ha eliminado
1. Crear un nuevo proyecto de aplicacin Web ASP.NET, denominado
BenefitsVB o BenefitsCS, en la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual Basic o Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Aplicacin Web ASP.NET,
establecer la ubicacin a http://localhost/BenefitsVB para el proyecto
Visual Basic .NET o a http://localhost/BenefitsCS para el proyecto
Visual C#.
d. Hacer clic en Agregar a Solucin, y hacer clic en Aceptar.
Cuando se agregan proyectos a la solucin, es importante el
uso de maysculas en el nombre del proyecto. Probablemente, utilizaremos
algunos formularios Web Forms ya generados en ste y en otros
laboratorios, por ello, debemos verificar que hemos escrito con maysculas
el nombre del proyecto Benefits.
Importante
Importante
Precaucin
Actualizar el proyecto Benefits
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
3. Buscar los archivos de proyecto:
Ir a la carpeta VB\Starter\BenefitsVB .
Ir a la carpeta CS\Starter\BenefitsCS .
Estas carpetas pueden encontrarse dentro del fichero labs14.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente Benefits, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de sobrescribir o recargar los archivos.
Crear la biblioteca de clases BenefitsList
Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto BenefitsList, o si se ha eliminado
1. Crear un nuevo proyecto de biblioteca de clases.
Crear un nuevo proyecto de biblioteca de clases Visual Basic .NET con el
nombre BenefitsListVB, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual Basic.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListVB.
d. Hacer clic en Agregar a solucin, y clic en Aceptar.
Crear un nuevo proyecto de biblioteca de clases Visual C#.NET con el
nombre BenefitsListCS, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la listaTipos de proyecto,
hacer clic en Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListCS.
d. Hacer clic en Agregar a solucin, y clic en Aceptar.
Verificar que se han escrito correctamente las maysculas del
proyecto BenefitsList.
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Importante
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Precaucin
Actualizar el proyecto BenefitsList
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
3. Ir al proyecto BenefitsList:
Ir a la carpeta VB\Starter\BenefitsListVB.
Ir a la carpeta CS\Starter\BenefitsListCS.
Estas carpetas pueden encontrarse dentro del fichero labs14.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente BenefitsList, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de si sobrescribir o recargar los archivos.
Crear una referencia al componente BenefitsList del proyecto Benefits
1. En el proyecto Benefits de la solucin LabApplication, completar los
siguientes pasos para agregar una referencia al componente BenefitsList
que acabamos de crear:
a. Hacer clic con el botn derecho en el proyecto BenefitsVB o
BenefitsCS en el Explorador de soluciones y hacer clic en Agregar
referencia.
b. En el cuadro de dilogo Agregar referencia, en la pestaa Proyectos,
hacer doble clic en el proyecto BenefitsListVB o BenefitsListCS.
c. En la lista Componentes seleccionados, seleccionar el componente
BenefitsListVB o BenefitsListCS, y hacer clic en Aceptar.
El componente se agrega a la carpeta Referencias en el Explorador de
soluciones.
Crear el Servicio Web XML Dental
Realizar este procedimiento nicamente si no se ha creado el
proyecto DentalService, o si se ha eliminado
2. Crear un nuevo proyecto de servicio Web XML.
Crear un nuevo proyecto de Servicio Web XML de Visual Basic .NET
denominado DentalServiceVB, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual Basic.
a. En la lista Plantillas, hacer clic en Servicio Web ASP.NET, y
establecer la ubicacin en http://localhost/DentalServiceVB.
b. Hacer clic en Agregar a solucin, y clic en Aceptar.
Verificar que se han utilizado correctamente las maysculas en
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#
Importante
Para el proyecto Visual
Basic .NET
Precaucin
el proyecto DentalServiceVB.
Crear un nuevo proyecto de Servicio Web XML con Visual C#.NET
denominado DentalServiceCS, y agregarlo a la solucin LabApplication:
c. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
d. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual C#.
a. En la lista Plantillas, hacer clic en Servicio Web ASP.NET, y
establecer la ubicacin en http://localhost/DentalServiceCS.
b. Hacer clic en Agregar a solucin, y clic en Aceptar.
Verificar que se han utilizado correctamente las maysculas en
el proyecto DentalServiceVB.
Actualizar el proyecto DentalService
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
DentalServiceVB o DentalServiceCS, seleccionar Agregar, y hacer clic en
Agregar elemento existente.
3. Buscar los archivos de proyecto:
Ir aVB\Starter\DentalServiceVB.
Ir aCS\Starter\DentalServiceCS.
Estas carpetas pueden encontrarse dentro del fichero labs14.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente DentalServiceVB, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de esta carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de sobrescribir o recargar los archivos.
7. Generar el servicio Web XML DentalService haciendo clic con el botn
derecho en el proyecto DentalServiceVB o DentalServiceCS en el
Explorador de soluciones y hacer clic en Generar.
Agregar una referencia Web en el proyecto Benefits al servicio Web
DentalService
1. En el proyecto Benefits de la solucin LabApplication, realizar los
siguientes pasos para agregar una referencia Web al servicio Web XML
DentalService:
a. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsVB o BenefitsCS y clic en Agregar referencia Web.
b. En el cuadro de texto Direccin, escribir
http://localhost/DentalServiceVB/DentalService1.asmx
http://localhost/DentalServiceCS/DentalService1.asmx
y pulsar ENTER..
Para el proyecto Visual
C#.NET
Precaucin
Para el proyecto Visual
Basic .NET
Para el proyecto Visual
C#.NET
Proyecto Visual Basic
.NET
Proyecto Visual C#
Se mostrar la referencia Web DentalService1.
c. Hacer clic en Agregar referencia.
La referencia Web se agrega al proyecto en la carpeta Referencias Web.
2. En el Explorador de soluciones, expandir Referencias Web, hacer clic con
el botn derecho en localhost, y seleccionar Cambiar nombre.
3. Escribir DentalWebRef, y pulsar ENTER.
4. Generar la solucin haciendo clic en Generar solucin en el men
Generar.
Instalar y configurar las bases de datos del estado de sesin
1. En el men Inicio, seleccionar Todos los programas, seleccionar
Accesorios, y hacer clic en Lnea de comandos.
Se abre una ventana de comandos.
2. En la lnea de comandos, escribir el siguiente comando, siendo version la
ltima versin del .NET Framework instalada en el equipo, y pulsar
ENTER:
cd \WINDOWS\Microsoft.NET\Framework\version\
La lnea de comandos cambia al nuevo directorio.
3. En la lnea de comandos, escribir el siguiente comando, y pulsar ENTER:
OSQL S localhost E <InstallSqlState.sql
La ventana de comandos muestra una serie de nmeros y mensajes, y
regresa a la lnea de comandos. Se han restablecido las bases de datos
ASPState y tempdb.
4. Cerrar la lnea de comandos y abrir Windows Explorer.
5. Ir al siguiente directorio:
VB\Starter
CS\Starter
Estas carpetas pueden encontrarse dentro del fichero labs14.zip
6. Hacer doble clic en Lab14.bat.
Este archivo de proceso por lotes ejecuta una consulta SQL que configura la
seguridad para las bases de datos ASPState y tempdb.
7. Cerrar Windows Explorer.
Proyecto Visual Basic
.NET
Proyecto Visual C#
Ejercicio 1
Securizar nuestro sitio Web utilizando la autenticacin basada en
Windows
En este ejercicio, configuraremos Internet Information Services (IIS) para que
utilice la autenticacin bsica y obtener acceso a pginas seguras, y la
autenticacin annima para obtener acceso a pginas no seguras. A
continuacin, editaremos el archivo Web.config para denegar el acceso a los
usuarios no autenticados a las pginas medical.aspx y doctors.aspx. Finalmente,
denegaremos el acceso a usuarios no autenticados a cualquier pgina del sitio
Coho Winery Web.
Configurar la autenticacin de IIS
1. En el men Inicio, hacer clic con el botn derecho en Mi PC y clic en
Administrar.
2. En la consola Administracin de equipos, expandir Servicios y
aplicaciones, expandir Servicios de Internet Information Services,
expandir Sitios Web, y expandir Sitio Web predeterminado.
3. Hacer clic con el botn derecho en la aplicacin Web BenefitsVB o
BenefitsCS y clic en Propiedades.
4. En el cuadro de dilogo Propiedades de BenefitsVB o BenefitsCS, en la
ficha Seguridad de directorios, en la seccin Control de autenticacin y
acceso annimo, hacer clic en Modificar.
5. En el cuadro de dilogo Mtodos de autenticacin, comprobar que est
seleccionado Acceso annimo, y que no est seleccionado Autenticacin
integrada de Windows, y seleccionar la casilla de verificacin de
Autenticacin bsica (la contrasea se enva en texto claro).
6. Cuando recibamos el aviso de seguridad sobre la habilitacin de la
autenticacin bsica, hacer clic en S. El aspecto de la configuracin es
como el de la siguiente ilustracin.
Se ha habilitado el acceso annimo, permitindonos
acceder a pginas seguras y no seguras de la misma aplicacin Web.
Para este ejercicio, se ha habilitado la autenticacin bsica sin utilizar
Secure Sockets Layer (SSL), lo cual significa que las contraseas se envan
utilizando texto claro. En un escenario del mundo real, para estar seguro,
debemos obtener un certificado de servidor y utilizar SSL cuando utilicemos
la autenticacin bsica.
7. Hacer clic en Aceptar, clic de nuevo en Aceptar y cerrar la consola
Administracin de equipos.
Nota de seguridad
Agregar una pgina para mostrar los resultados de la informacin
sobre seguridad
1. Abrir el proyecto BenefitsVB o BenefitsCS en la solucin LabApplication
Visual Studio .NET.
2. Agregar el formulario Web Form securitytest.aspx al proyecto Benefits
desde la carpeta
VB\Starter\BenefitsVB.
CS\Starter\BenefitsCS.
Estas carpetas pueden encontrarse dentro del fichero labs14.zip
3. Abrir el archivo securitytest.aspx.vb o securitytest.aspx.cs y examinar su
contenido. cul es la utilidad de las dos lneas de cdigo del procedimiento
de evento Page_Load?
____________________________________________________________
____________________________________________________________
Configurar la seguridad del archivo Web.config para algunas de las
pginas del proyecto Benefits
1. Abrir el archivo Web.config en el proyecto BenefitsVB o BenefitsCS.
2. Buscar la seccin <authentication>y verificar que el modo est establecido
en autenticacin Windows.
La configuracin debera tener lo siguiente:
<authentication mode="Windows" />
3. Para el proyecto Visual Basic .NET, eliminar la seccin <authorization>
existente de Web.config.
4. Denegar el acceso a usuarios annimos para las pginas medical.aspx y
doctors.aspx. Introducir nuestra configuracin al final del archivo
Web.config, despus de la etiqueta </system.web>, pero antes de la etiqueta
</configuration>.
La configuracin debera tener el siguiente aspecto:
<location path="medical.aspx">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
<location path="doctors.aspx">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
Visual Basic .NET
Visual C#
Guardar y probar
1. Guardar los cambios.
2. Generar el proyecto BenefitsVB o BenefitsCS.
3. Abrir un nuevo navegador e ir a http://localhost/BenefitsVB/default.aspx o
http://localhost/BenefitsCS/default.aspx.
4. Hacer clic en Life Insurance y comprobar que la pgina life.aspx se abre
sin solicitar ninguna credencial de usuario.
5. Ir a http://localhost/BenefitsVB/SecurityTest.aspx o
http://localhost/BenefitsCS/SecurityTest.aspx.
Esta pgina no muestra ninguna informacin de autenticacin debido a que
no estamos autenticados.
6. Ir a http://localhost/BenefitsVB/Medical.aspx o
http://localhost/BenefitsCS/Medical.aspx. Deberamos ver el cuadro de
dilogo Conectar a localhost.
7. Introducir nuestro nombreequipo\nombreusuario y la contrasea de nuestra
aula.
Ahora podemos explorar la pgina medical.aspx.
8. Ir de nuevo a http://localhost/BenefitsVB/SecurityTest.aspx o
http://localhost/BenefitsCS/SecurityTest.aspx.
La pgina muestra ahora nuestra informacin de autenticacin. Si no se
muestra nuestra informacin de autenticacin, actualizar la pgina.
9. Cerrar el navegador.
Configurar la seguridad de la carpeta del sitio Web BenefitsVB o
BenefitsCS en el archivo Web.config
1. Abrir el archivo Web.config.
2. Denegar el acceso a usuarios annimos a toda la carpeta Benefits. Para ello,
debemos eliminar las dos secciones <location>que se agregaron
anteriormente y crear una nueva seccin para denegar el acceso a usuarios
annimos a toda la carpeta, justo despus del elemento <authentication>en
el archivo Web.config.
La configuracin debera tener el siguiente aspecto:
<authorization>
<deny users="?" />
</authorization>
Guardar y probar
1. Guardar los cambios.
No es necesario volver a generar el proyecto BenefitsVB o BenefitsCS ya
que no ha cambiado el cdigo. Tan pronto como se guarde el archivo
Web.config, los cambios tendrn efecto.
2. Abrir una nueva instancia del navegador e ir a
http://localhost/BenefitsVB/default.aspx o
http://localhost/BenefitsCS/default.aspx.
Debemos asegurarnos de que abrimos un nuevo navegador. Si
continuamos en la sesin autenticada anterior, no podremos probar si la
seguridad funciona.
Esta vez deberamos ver inmediatamente el cuadro de dilogo Conectar a
localhost, ya que todas las pginas estn aseguradas, incluyendo
default.aspx.
3. Introducir nombreequipo\nombreusuario y la contrasea del aula, y hacer
clic en Aceptar.
Ahora podemos ir a todas las pginas que se encuentran en la aplicacin
Web Benefits.
Acceder al sitio Web Coho Winery de un compaero
1. Abrir un nuevo navegador e ir a:
http://Nombreequipocompaero/BenefitsVB/default.aspx o
http://Nombreequipocompaero/BenefitsCS/default.aspx
2. Deberamos ver el cuadro de dilogo Conectar a localhost.
3. Introducir nombre_equipo\nombreusuario y la contrasea del aula, y hacer
clic en Aceptar.
Ahora podemos ir a todas las pginas del sitio Web Coho Winery de nuestro
compaero.
Nota
Ejercicio 2
Securizar el sitio Web utilizando la autenticacin basada en
formularios
En este ejercicio, cambiaremos la configuracin de IIS para utilizar nicamente
la autenticacin annima, y utilizaremos la autenticacin basada en formularios
para administrar el acceso a pginas seguras de la aplicacin Web Benefits.
Configuraremos el archivo Web.config para utilizar la autenticacin basada en
formularios denegando el acceso a usuarios no autenticados a ninguna pgina
de la carpeta del proyecto Benefits. Finalmente, crearemos la pgina login.aspx
y validaremos las credenciales de usuario comparndolas con las incluidas en la
tabla Logins de la base de datos de Coho.
Configurar IIS para utilizar nicamente autenticacin annima
1. En el men Inicio, hacer clic con el botn derecho en Mi PC y hacer clic en
Administrar.
2. En la consola Administracin de equipos, expandir Servicios y
aplicaciones, expandir Internet Information Services, expandir Sitios
Web, y expandir Sitio Web predeterminado.
3. Hacer clic con el botn derecho en la aplicacin Web BenefitsVB o
BenefitsCS y clic en Propiedades.
4. En el cuadro de dilogo Propiedades de BenefitsVB o BenefitsCS, en la
ficha Seguridad de directorios, en la seccin Control de autenticacin y
acceso annimo, hacer clic en Edicin.
5. En el cuadro de dilogo Mtodos de autenticacin, verificar que est
seleccionada la casilla de verificacin de Acceso annimo y desactivar la
casilla de verificacin de Autenticacin bsica (la contrasea se enva en
texto claro).
6. Hacer clic en Aceptar, clic de nuevo en Aceptar, y cerrar la consola
Administracin de equipos.
Configurar la autenticacin basada en formularios en el archivo
Web.config
1. Abrir el archivo Web.config en el proyecto BenefitsVB o BenefitsCS.
2. Buscar la seccin <authentication>y cambiarla para utilizar la autenticacin
basada en formularios. Crearemos una cookie denominada ASPXAUTH, y
redirigiremos al usuario a una pgina denominada login.aspx si no est
autenticado.
La configuracin debera tener el siguiente aspecto:
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="login.aspx" />
</authentication>
Agregar una cadena de conexin a la base de datos de Coho en el
archivo Web.config
1. En el archivo Web.config, agregar una seccin <appSettings>. Nuestra
configuracin debe colocarse al final del archivo Web.config, tras la
etiqueta </system.web>, pero antes de la etiqueta </configuration>.
Si el archivo Web.config ya tiene una seccin <appSettings>, no
crear otra. Continuar con los pasos siguientes y agregar el nuevo cdigo a la
seccin <appSettings>existente.
2. Agregar una nueva clave denominada conStrCoho con una cadena de
conexin que utilice la seguridad integrada de Windows para acceder a la
base de datos local de Coho. La adicin al archivo Web.config debera ser
como la siguiente:
<appSettings>
<add key="conStrCoho" value="data source=localhost;
initial catalog=Coho; integrated security=true" />
</appSettings>
Agregar un formulario Web Form login.aspx para introducir las
credenciales
Agregar el formulario Web Form login.aspx desde la carpeta
VB\Starter\BenefitsVB o CS\Starter\BenefitsCS al proyecto BenefitsVB o
BenefitsCS. Estas carpetas pueden encontrarse dentro del fichero labs14.zip
Esta pgina contiene un cuadro de texto para introducir la direccin de
correo electrnico, un cuadro de contrasea, un botn Submit, dos etiquetas
y un hiperenlace.
Abrir la pgina de cdigo subyacente del formulario Web Form login.aspx y
localizar el siguiente comentario en la seccin Imports al principio de la
pgina:
TODO Lab 14: add the Imports for forms-based auth
1. Para este ejercicio, utilizaremos la clase FormsAuthentication. Utilizando
los documentos de Ayuda, determinar qu espacio de nombres debemos
importar para utilizar esta clase, y escribir la instruccin de importacin.
El cdigo debera ser como el siguiente:
Imports System.Web.Security
using System.Web.Security;
Nota
Visual Basic .NET
Visual C#
3. Localizar la funcin Login y examinar su contenido.
Cul es el nombre del mtodo que se utiliza para recuperar la cadena de
conexin a la base de datos de Coho desde la seccin <appSettings> del
archivo Web.config?
_____________________________________________________________
_____________________________________________________________
Cul es el nombre del procedimiento almacenado que se utiliza para el
inicio de sesin?
_____________________________________________________________
_____________________________________________________________
4. Localizar el siguiente comentario en el procedimiento de evento
cmdLogin_Click:
TODO Lab 14: Call the Login function
5. Invocar la funcin Login, pasando el valor de la caja de texto txtEmail y el
valor de txtPassword. Almacenar el valor devuelto en la variable
strEmployeeID.
El cdigo debera ser como el siguiente:
strEmployeeId = Login(txtEmail.Text, txtPassword.Text)
strEmployeeId = Login(txtEmail.Text, txtPassword.Text);
6. Localizar el siguiente comentario en el procedimiento de evento
cmdLogin_Click:
TODO Lab 14: Login users and generate an auth. cookie
7. Escribir el cdigo para autenticar usuarios, crear una cookie de
autenticacin temporal (no persistente) y redirigir al usuario a la pgina que
solicit originalmente:
a. Probar si la variable strEmployeeId no es una cadena vaca. Esto
muestra si la direccin electrnica y contrasea del empleado se han
encontrado en la base de datos.
b. Si la variable strEmployeeId no es una cadena vaca, redirigir al usuario
a la pgina solicitada y crear una cookie temporal (no persistente) con la
cadena de identidad strEmployeeId.
c. Si la variable strEmployeeId es una cadena vaca, redirigir, y mostrar el
mensaje Login Failed! en la etiqueta lblInfo de la pgina login.aspx.
Visual Basic .NET
Visual C#
El cdigo debera ser como el siguiente:
If (strEmployeeId <> "") Then
FormsAuthentication.RedirectFromLoginPage _
(strEmployeeId, False)
Else 'Login failed
lblInfo.Text = "Login Failed!"
End If
if (strEmployeeId != "")
{
FormsAuthentication.RedirectFromLoginPage
(strEmployeeId, false);
}
else //Login failed
{
lblInfo.Text = "Login Failed!";
}
En qu se diferencia crear una cookie temporal (no persistente) y una
cookie persistente?
____________________________________________________________
____________________________________________________________
Qu mtodo utilizamos para leer la identidad del usuario autenticado, que
est almacenada en la cookie de autenticacin, desde un formulario Web
Form de la aplicacin Web ASP.NET?
____________________________________________________________
____________________________________________________________
Visual Basic .NET
Visual C#
Guardar y probar
1. Guardar los cambios.
2. Generar el proyecto BenefitsVB o BenefitsCS.
3. Abrir un nuevo navegador e ir a http://localhost/BenefitsVB/default.aspx o
http://localhost/BenefitsCS/default.aspx.
Deberamos ser redirigidos a la pgina login.aspx porque todas las pginas
estn securizadas, incluyendo default.aspx.
4. Examinar la URL (Uniform Resource Locator) en el navegador. Qu
vemos? Por qu?
_____________________________________________________________
_____________________________________________________________
5. Introducir la direccin electrnica y contrasea de un empleado que est
incluido en la tabla Logins de la base de datos Coho (direccin electrnica
someone@cohowinery.com, y contrasea someone), y hacer clic en Sign
In Now.
Ahora podemos navegar por todas las pginas.
6. Hacer clic en el enlace Life Insurance y comprobar que la pgina life.aspx
se abre sin solicitar nuestros credenciales.
7. Ir a http://localhost/BenefitsVB/SecurityTest.aspx o a
http://localhost/BenefitsCS/SecurityTest.aspx. Deberamos ver el ID de
empleado 1, que corresponde a la direccin electrnica
someone@cohowinery.com. Tambin veremos que somos autenticados con
la autenticacin basada en formularios.
8. Cerrar el navegador.
Cuando se utiliza la autenticacin basada en
formularios, la contrasea que se introduce en la pgina de inicio de sesin
se enva en texto claro a travs de la red. En un escenario del mundo real,
para evitar la posibilidad de que alguien obtenga la contrasea, debemos
utilizar una conexin SSL.
Nota de seguridad
Ejercicio 3 (si se dispone de tiempo)
Registrar nuevos usuarios
En este ejercicio, agregaremos cdigo a la pgina register.aspx, que permite a
los usuarios agregar un nuevo empleado a la tabla Logins de la base de datos de
Coho.
Agregar un formulario Web Form register.aspx para introducir nuevos
empleados
1. Abrir el proyecto Benefits en la solucin LabApplication de Visual Studio
.NET.
2. Agregar el formulario Web Form register.aspx desde la carpeta
VB\Starter\BenefitsVB o
CS\Starter\BenefitsCS al proyecto BenefitsVB o BenefitsCS.
Estas carpetas pueden encontrarse dentro del fichero labs14.zip
3. Abrir el formulario Web Form register.aspx y examinar su contenido. Qu
tipos de controles de validacin se utilizan en este formulario Web Form?
____________________________________________________________
____________________________________________________________
4. Abrir la pgina de cdigo subyacente register.aspx.vb o register.aspx.cs. La
pgina de cdigo subyacente contiene una funcin denominada
AddEmployee cuyo aspecto es muy similar al de la funcin Login de la
pgina de inicio, pero invoca otro procedimiento almacenado, denominado
EmployeeAdd, que agrega un nuevo empleado a la tabla Logins de la base
de datos de Coho.
5. Localizar el siguiente comentario en el procedimiento de evento
cmdValidation_Click:
TODO Lab 14: Call the AddEmployee function
6. Invocar la funcin AddEmployee, pasndole el valor de las cajas de texto
txtEmail y de txtPassword. Almacenar el valor devuelto en la variable
strEmployeeID.
El cdigo debera ser parecido al siguiente:
strEmployeeId = _
AddEmployee(txtEmail.Text, txtPassword.Text)
strEmployeeId =
AddEmployee(txtEmail.Text, txtPassword.Text);
7. Localizar el siguiente comentario en el procedimiento de evento
cmdValidation_Click:
TODO Lab 14: Login users and generate an auth. cookie
Visual Basic .NET
Visual C#
8. En la instruccin If, escribir el cdigo para autenticar usuarios, crear una
cookie de autenticacin temporal (no persistente), y redirigir al usuario al
formulario Web Form default.aspx.
El cdigo debera ser como el siguiente:
FormsAuthentication.SetAuthCookie( _
strEmployeeId, False)
Response.Redirect("default.aspx")
FormsAuthentication.SetAuthCookie(
strEmployeeId, false);
Response.Redirect("default.aspx");
9. Por qu se utiliza aqu el mtodo SetAuthCookie y no
RedirectFromLoginPage?
_____________________________________________________________
_____________________________________________________________
Guardar y probar
1. Guardar los cambios.
2. Generar el proyecto BenefitsVB o BenefitsCS.
3. Abrir un nuevo navegador e ir a http://localhost/BenefitsVB/default.aspx o a
http://localhost/BenefitsCS/default.aspx.
Deberamos ser redirigidos rpidamente a la pgina login.aspx puesto que
todas las pginas estn securizadas y, por tanto, default.aspx es una pgina
segura.
4. Hacer clic en Click here! Para abrir el formulario Web Form
registration.aspx para inscribir a un nuevo empleado.
Qu puede observarse? Por qu? Cmo puede solucionarse?
_____________________________________________________________
_____________________________________________________________
Visual Basic .NET
Visual C#
Configurar la seguridad para la pgina register.aspx en el archivo
Web.config
1. Abrir el archivo Web.config del proyecto BenefitsVB o BenefitsCS.
2. Introducir la informacin de configuracin para autorizar a todos los
usuarios a acceder al formulario Web Form register.aspx. Colocar esta
informacin al final del archivo Web.config, justo despus de la etiqueta
</appSettings>, pero antes de la etiqueta </configuration>.
La configuracin debera ser como la siguiente:
<location path="register.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
Guardar y probar
1. Guardar los cambios.
No es necesario volver a generar el proyecto ya que nicamente
hemos cambiado el archivo Web.config.
2. Abrir un nuevo navegador e ir a http://localhost/BenefitsVB/default.aspx o a
http://localhost/BenefitsCS/default.aspx.
Deberamos ser redirigidos a la pgina login.aspx.
3. Hacer clic en Click here! para abrir el formulario Web Form
registration.aspx e inscribir un nuevo empleado. Deberamos ver ahora el
formulario Web Form register.aspx.
4. Introducir la direccin electrnica y una contrasea para ser agregado a la
base de datos como un nuevo empleado. Hacer clic en Submit.
Seremos redirigidos a la pgina default.aspx, y podremos explorar todas las
pginas.
5. Hacer clic en el enlace Life Insurance y comprobar que la pgina life.aspx
se abre sin solicitar las credenciales.
6. Ir a http://localhost/BenefitsVB/SecurityTest.aspx o a
http://localhost/BenefitsCS/SecurityTest.aspx. Deberamos ver nuestro ID
de empleado y que estamos autenticados con autenticacin basada en
formularios.
7. Cerrar el navegador, abrir un nuevo navegador, e ir a
http://localhost/BenefitsVB/default.aspx o a
http://localhost/BenefitsCS/default.aspx.
8. En la pgina login.aspx, iniciar sesin con las nuevas credenciales.
Nota
Registrarse como empleado nuevo en el sitio Web Coho Winery de un
compaero
1. Abrir un nuevo navegador e ir a
http://Nombreequipocompaero/BenefitsVB/default.aspx o a
http://Nombreequipocompaero/BenefitsCS/default.aspx.
Deberamos ser redirigidos a la pgina login.aspx del sitio Web Coho
Winery del compaero.
2. Hacer clic en Click here! Para abrir el formulario Web Form
registration.aspx y registrarse como nuevo empleado. Deberamos ver el
formulario Web Form register.aspx.
3. Introducir la direccin electrnica y una contrasea para ser agregado a la
base de datos como un nuevo empleado. Hacer clic en Submit.
Ahora, deberamos poder ver todas las pginas del sitio Web Benefits del
compaero.
Ejercicio 4 (si se dispone de tiempo)
Permitir a los usuarios abandonar la sesin
En este ejercicio, agregaremos cdigo a la pgina signout.aspx que permite a
los usuarios abandonar el sitio Web Coho Winery. Cerrar la sesin puede
resultar til cuando un usuario comparte un equipo con otro usuario y desea
asegurarse de que el otro usuario no pueda acceder a informacin privada.
Actualizar el control de usuario header.ascx y agregar el formulario
Web Form signout.aspx
1. Abrir el proyecto BenefitsVB o BenefitsCS en la solucin LabApplication
de Visual Studio .NET.
2. En el Explorador de soluciones, eliminar el control de usuario header.ascx.
Agregar el control de usuario header.ascx y el formulario Web Form
signout.aspx desde la carpeta VB\Starter\BenefitsVB o
CS\Starter\BenefitsCS al proyecto BenefitsVB o BenefitsCS. Estas carpetas
pueden encontrarse dentro del fichero labs14.zip
3. El control de usuario header.ascx actualizado contiene un nuevo enlace
denominado Sign out que abre el formulario signout.aspx.
4. Abrir el formulario signout.aspx. El formulario Web Form contiene
informacin que notifica al usuario que se cerrar su sesin y un botn Sign
Out.
5. Abrir la pgina de cdigo subyacente signout.aspx.vb o signout.aspx.cs y
localizar el siguiente comentario en el procedimiento de evento
cmdSignout_Click:
TODO Lab 14: Implement the signout
6. Escribir el cdigo para cerrar la sesin de los usuarios y redirigirlos al
formulario Web Form login.aspx.
El cdigo debera ser como el siguiente:
FormsAuthentication.SignOut()
Response.Redirect("login.aspx")
FormsAuthentication.SignOut();
Response.Redirect("login.aspx");
Visual Basic .NET
Visual C#
Guardar y probar
1. Guardar los cambios.
2. Generar el proyecto BenefitsVB o BenefitsCS.
3. Abrir un nuevo navegador e ir a http://localhost/BenefitsVB/default.aspx o
http://localhost/BenefitsCS/default.aspx.
Deberamos ser redirigidos a la pgina login.aspx.
4. Introducir la direccin electrnica y una contrasea, y hacer clic en Sign In
Now.
5. Hacer clic en el enlace Life Insurance y comprobar que la pgina life.aspx
se abre sin solicitar nuestras credenciales.
6. Hacer clic en el hiperenlace signout y clic en Sign Out.
Somos redirigidos a la pgina login.aspx.
7. Sin cerrar el navegador, ir de nuevo a
http://localhost/BenefitsVB/default.aspx o a
http://localhost/BenefitsCS/default.aspx. Actualizar el navegador.
Deberamos ser devueltos a la pgina login.aspx.
ndice
Descripcin 1
Leccin: descripcin de la seguridad para aplicaciones Web 2
Leccin: trabajar con autenticacin basada en Windows 14
Leccin: trabajar con autenticacin basada en formularios 25
Leccin: descripcin de la autenticacin mediante Microsoft
Passport 36
Seguridad en aplicaciones Web con
Microsoft ASP.NET
Seguridad en aplicaciones Web con Microsoft ASP.NET 1
Descripcin
Descripcin de la seguridadpara aplicaciones Web
Trabajar con autenticacin basada en Windows
Trabajar con autenticacin basada en formularios
Descripcin de la autenticacin de Microsoft Passport
*****************************
La seguridad de las aplicaciones Web es un tema crtico y complejo para los
desarrolladores Web. Un sistema seguro requiere una cuidadosa planificacin, y
los administradores y desarrolladores de sitios Web deben tener un
conocimiento muy claro de las opciones de que disponen cuando securizan sus
aplicaciones Web.
Microsoft ASP.NET est sincronizado con el .NET Framework e Internet
Information Server (IIS) para proporcionar seguridad a las aplicaciones Web.
Este mdulo trata en detalle los distintos mtodos de seguridad para las
aplicaciones Web.
En este mdulo, aprenderemos a:
Describir los mtodos de autenticacin de ASP.NET e IIS.
Utilizar la autenticacin basada en Windows para asegurar aplicaciones
Web ASP.NET.
Utilizar la autenticacin basada en formularios para asegurar aplicaciones
Web ASP.NET.
Utilizar Microsoft Passport para asegurar aplicaciones Web ASP.NET.
Introduccin
Objetivos
2 Seguridad en aplicaciones Web con Microsoft ASP.NET
Leccin: descripcin de la seguridad para aplicaciones
Web
Autenticacinfrenteaautorizacin
Cules sonlos mtodos deautenticacindeASP.NET?
Multimedia: mtodos deautenticacindeASP.NET
Comparacindelos mtodos deautenticacinde
ASP.NET
Cules sonlos mecanismos deautenticacindeIIS?
Demostracin: uso delos mecanismos deautenticacin
deIIS
Ques SecureSocketsLayer?
*****************************
Por definicin, las aplicaciones Web ofrecen a los usuarios acceso a un recurso
centralizado, el servidor Web, y, a travs de l, acceso a servidores de bases de
datos. Conociendo e implementando medidas de seguridad adecuadas para
nuestra aplicacin Web, podemos proteger nuestros propios recursos, adems
de proporcionar un entorno seguro en el que los usuarios trabajen
cmodamente.
En esta leccin, se describen distintos conceptos de seguridad: autenticacin,
autorizacin y mecanismos de autenticacin de IIS. Tambin estudiaremos el
protocolo Secure Sockets Layer (SSL).
En esta leccin, aprenderemos a:
Describir los dos conceptos fundamentales de seguridad para asegurar una
aplicacin Web.
Describir los tres mtodos de autenticacin de ASP.NET.
Distinguir entre los tres mtodos de autenticacin de ASP.NET.
Describir los cuatro mecanismos de autenticacin de IIS.
Describir SSL.
Introduccin
Objetivos de la leccin
Seguridad en aplicaciones Web con Microsoft ASP.NET 3
Autenticacin frente a autorizacin
Autenticacin
Acepta credenciales de un usuario
Valida las credenciales
Autorizacin
En funcin de las credenciales de autenticacin
suministradas, determina el derecho de acceso a un
recurso
Puede asignarse por nombre de usuario o por rol
*****************************
Para poder empezar a trabajar con temas relacionados con la seguridad,
debemos estar familiarizados con los dos conceptos fundamentales de seguridad
para las aplicaciones Web:
Autenticacin
Autorizacin
La autenticacin es el proceso de obtener las credenciales de identificacin de
un usuario, como un nombre y una contrasea, y validar esas credenciales
consultando a alguna autoridad, como una base de datos. Si las credenciales son
vlidas, la entidad que las ha presentado se considera una identidad autenticada.
Por ejemplo, todos los usuarios deben proporcionar un nombre de usuario y una
contrasea cada vez que inician sesin en una red. Estas credenciales se validan
consultndolas a una autoridad, como una base de datos o un servidor de
dominio basado en Microsoft Windows.
Despus de que una identidad haya sido autenticada, el proceso de autorizacin
determina si esa identidad tiene acceso a un recurso especfico. El proceso de
autorizacin limita los derechos de acceso concediendo o denegando permisos
especficos a una identidad autenticada.
Por ejemplo, podemos autorizar al usuario Ricardo Heras para que acceda a la
impresora de color, pero denegar el acceso al usuario Brbara Gmez. De modo
similar, podemos autorizar nicamente a los usuarios del grupo Multimedia el
acceso a la impresora de color y denegar el acceso al resto de usuarios.
Introduccin
Autenticacin
Autorizacin
4 Seguridad en aplicaciones Web con Microsoft ASP.NET
Cules son los mtodos de autenticacin de ASP.NET?
AutenticacinbasadaenWindows
Depende del sistema operativo Windows y de IIS
El usuario solicita una pgina Web segura y la solicitud pasa por IIS
Una vez IIS verifica las credenciales, se devuelve la pgina Web segura
Autenticacinbasadaenformularios
Las solicitudes no autenticadas son redirigidas a un formulario HTML
El usuario proporciona credenciales y enva el formulario HTML
Una vez verificadas las credenciales, se suministra una cookiede
autenticacin
AutenticacinmedianteMicrosoft Passport
Servicio de autenticacin centralizado que ofrece una nica opcin de inicio
de sesin
Microsoft Passport es un Servicio Web XML
*****************************
ASP.NET implementa la autenticacin mediante mtodos de autenticacin. Los
mtodos de autenticacin de ASP.NET contienen el cdigo necesario para
autenticar las credenciales de usuario.
ASP.NET soporta tres tipos de mtodos de autenticacin:
Autenticacin basada en Windows
Autenticacin basada en formularios
Autenticacin mediante Microsoft Passport
En la autenticacin basada en Windows, la aplicacin Web ASP.NET depende
del sistema operativo Windows para autenticar al usuario. ASP.NET utiliza la
autenticacin basada en Windows conjuntamente con la autenticacin de IIS.
En la autenticacin basada en Windows, el usuario solicita una pgina Web
segura de la aplicacin Web, y la solicitud pasa por IIS. Si las credenciales del
usuario no coinciden con las de un usuario autorizado, IIS rechaza la solicitud.
A continuacin, el usuario debe introducir su nombre y contrasea en el
formulario de inicio de sesin. IIS verifica de nuevo las credenciales. Si son
correctas, IIS dirige la solicitud original a la aplicacin Web y el usuario recibe
la pgina Web segura.
La autenticacin basada en formularios hace referencia a un sistema donde
solicitudes no autenticadas son redirigidas a un formulario Hypertext Markup
Language (HTML) utilizando la redireccin en el lado del cliente Hypertext
Transfer Protocol (HTTP). El usuario proporciona las credenciales y enva el
formulario. Si la aplicacin valida las credenciales en el formulario, el sistema
suministra al usuario una cookie de autenticacin. Las solicitudes subsiguientes
Introduccin
Mtodos de
autenticacin
Autenticacin basada en
Windows
Autenticacin basada en
formularios
Seguridad en aplicaciones Web con Microsoft ASP.NET 5
del usuario se emiten con la cookie de autenticacin en el encabezado de la
solicitud, y el usuario es autenticado en base a dicho encabezado.
La autenticacin mediante Passport consiste en un servicio de autenticacin
centralizado, proporcionado por Microsoft, que ofrece una nica opcin de
inicio de sesin y unos servicios con un perfil bsico a los sitios suscritos. Los
usuarios que se registren utilizando Passport estarn autenticados para acceder a
sitios Web utilizando una nica cuenta Passport. Microsoft Passport es un
Servicio Web XML, y es una parte esencial de Microsoft .NET.
Autenticacin mediante
Microsoft Passport
6 Seguridad en aplicaciones Web con Microsoft ASP.NET
Comparacin de los mtodos de autenticacin de ASP.NET
Inicio de sesin nico para
muchos sitios de Internet
No es necesario mantener una
base de datos para almacenar
informacin del usuario
Permite a los desarrolladores
personalizar el aspecto de la
pgina de inscripcin
Adecuada para aplicaciones de
Internet
Soporta todo tipo de clientes
Utiliza infraestructura Windows
existente
Controla el acceso a
informacin confidencial
Ventajas Ventajas
Basada en cookies
Implica cuota
Autenticacin
mediante
Microsoft
Passport
Basada en cookies
Autenticacin
basadaen
formularios
No apropiado para
la mayora de
aplicaciones de
Internet
Autenticacin
basadaen
Windows
Inconvenientes Inconvenientes M M todo todo
*****************************
Cada uno de los tres mtodos de autenticacin que soporta ASP.NET (basado
en Windows, basado en formularios y Microsoft Passport) es adecuado para
situaciones especficas. Cada mtodo tiene diversas ventajas e inconvenientes.
La autenticacin basada en Windows utiliza la infraestructura de Windows
existente y, por tanto, es ms adecuado en situaciones en las que se dispone de
un nmero fijo de usuarios con cuentas de usuario Windows existentes. Dos
ejemplos de situaciones de este tipo son:
El desarrollo de una intranet para una organizacin. Es muy probable que la
organizacin disponga de cuentas de usuario Windows configuradas para
cada empleado.
El control del acceso a informacin confidencial. Por ejemplo, los usuarios
del grupo de Recursos Humanos de una empresa pueden acceder a
directorios que contienen currculos de empleados e informacin de salarios.
Podemos utilizar la autenticacin basada en Windows para evitar que los
empleados de otros grupos, como el grupo de Desarrolladores, accedan a
estos documentos confidenciales.
El inconveniente de la autenticacin basada en Windows es que no es adecuada
para la mayora de aplicaciones de Internet. Por ejemplo, si estamos generando
un sistema pblico de registro de usuarios y contraseas, la autenticacin
basada en Windows no es una buena opcin de autenticacin. Con la
autenticacin basada en Windows, debe configurarse una cuenta de usuario de
Windows vlida por cada usuario que acceda a una pgina restringida. El
proceso de agregar nuevas cuentas de usuario no puede automatizarse
fcilmente.
Introduccin
Autenticacin basada en
Windows
Seguridad en aplicaciones Web con Microsoft ASP.NET 7
La autenticacin basada en formularios es una buena solucin si se desea
configurar un sistema personalizado de registro de usuarios para un sitio Web.
La ventaja de este tipo de autenticacin es que nos permite almacenar nombres
de usuario y contraseas en el mecanismo de almacenamiento que deseemos, ya
sea el archivo web.config, un archivo Extensible Markup Language (XML) o la
tabla en una base de datos.
La autenticacin basada en formularios depende de cookies para determinar la
identidad del usuario. Una vez habilitada la autenticacin basada en
formularios, el usuario no puede acceder a la pgina solicitada a menos que se
encuentre en el cliente una cookie especfica. Si esta cookie no est, o si no es
vlida, ASP.NET rechaza la solicitud y devuelve una pgina de inicio de sesin.
La autenticacin mediante Microsoft Passport tiene varias ventajas, incluyendo:
Permite a los usuarios utilizar el mismo nombre de usuario y contrasea
para iniciar sesin en numerosos sitios Web; por tanto, es menos probable
que los usuarios olviden sus contraseas. Por ejemplo, tanto Microsoft
Hotmail como Microsoft MSN utilizan Microsoft Passport para autenticar
usuarios.
No es necesario configurar y mantener una base de datos para almacenar la
informacin de registro. Microsoft se encarga de realizar todo el
mantenimiento.
Proporciona opciones para personalizar el aspecto de las pginas de registro
e inicio de sesin mediante plantillas.
El uso de la autenticacin mediante Microsoft Passport tiene dos
inconvenientes. En primer lugar, existe una cuota de suscripcin por utilizar el
servicio Microsoft Passport en desarrollo. En segundo lugar, la autenticacin
Microsoft Passport est basada en cookies.
Autenticacin basada en
formularios
Autenticacin mediante
Microsoft Passport
8 Seguridad en aplicaciones Web con Microsoft ASP.NET
Cules son los mecanismos de autenticacin de IIS?
Alto
Medio
Bajo
(Medio con SSL)
Ninguno
Nivel de Nivel de
seguridad seguridad
Utiliza NTLM o Kerberos
Generalmente adecuado para intranets,
no Internet
No funciona a travs de muchos
cortafuegos
Seguridad
integrada de
Windows
Enva la informacin en un hash(o
digest) codificado
Requiere Internet Explorer 5 o superior
Requiere Active Directory
Autenticacin
implcita
El cliente enva nombre de usuario y
contrasea como texto claro
Puede encriptarse utilizando SSL
Parte de la especificacin HTTP y
soportado por la mayora de
exploradores
Autenticacin
bsica
No se produce autenticacin Acceso annimo
Descripci Descripci n n Mecanismos Mecanismos
*****************************
Para poder utilizar la autenticacin basada en Windows, debemos configurar
antes el servidor Web IIS. Cuando un usuario solicita una pgina que requiere
autorizacin, el usuario debe ser autenticado a travs de IIS.
IIS proporciona varios mecanismos que pueden utilizarse para establecer
autenticacin, incluyendo:
Acceso annimo
Autenticacin bsica
Autenticacin implcita
Seguridad integrada de Windows
Para aplicaciones Web en las que usuarios desconocidos realizan solicitudes,
normalmente aplicaciones Web pblicas, IIS soporta un usuario annimo, un
usuario que no dispone de credenciales de autenticacin. Cuando IIS recibe una
solicitud de un usuario annimo, IIS hace la solicitud a Windows utilizando la
cuenta predeterminada IUSR_nombreequipo.
La cuenta predeterminada IUSR_ nombreequipo puede modificarse
mediante el complemento de administracin de IIS.
IIS tambin soporta un modelo de autenticacin bsica. En la autenticacin
bsica, se solicita a los usuarios sin credenciales que suministren un nombre de
usuario y una contrasea. Esta informacin se devuelve a IIS, y a partir de
entonces est disponible para la aplicacin Web. La ventaja de la autenticacin
bsica es que forma parte de la especificacin HTTP y est soportada por la
mayora de navegadores. La autenticacin bsica proporciona un modo til para
ofrecer acceso restringido a una aplicacin Web pblica.
Sin embargo, debido a que el usuario pasa un nombre de usuario y una
contrasea a IIS en forma de texto claro, la autenticacin bsica no ofrece un
Introduccin
Acceso annimo
Nota
Autenticacin bsica
Seguridad en aplicaciones Web con Microsoft ASP.NET 9
nivel alto de seguridad. Para incrementarlo, se utiliza SSL para encriptar
nombres de usuario y contraseas cuando se transmiten a travs de la red.
La autenticacin implcita es similar a la autenticacin bsica, pero utiliza la
encriptacin para enviar informacin del usuario al servidor. Si el acceso
annimo est deshabilitado, se pide a los usuarios sus credenciales (informacin
de inicio de sesin). El navegador combina esta informacin de inicio de sesin
con el resto de informacin almacenada en el cliente, y enva al servidor un
hash codificado denominado hash MD5 (o Message Digest). El servidor ya
dispone de una copia de esta informacin y recrea los destalles originales desde
su propio hash y autentica el usuario. Este mecanismo nicamente funciona con
Microsoft Internet Explorer 5 y superior, pero pasa a travs de cortafuegos,
servidores proxy e Internet.
Sin embargo, la autenticacin implcita nicamente funciona con cuentas de
dominio dadas de alta en el servicio de directorios Active Directory.
Para ms informacin sobre la configuracin de las cuentas de dominio
de Active Directory para permitir la autenticacin implcita, consultar la
documentacin de IIS.
Si el usuario que realiza la solicitud ya ha sido autenticado en una red basada en
Windows, IIS puede pasar las credenciales del usuario cuando solicite acceso a
un recurso. Las credenciales no incluyen el nombre de usuario y la contrasea,
nicamente un token encriptado que indica el estado de seguridad del usuario.
La seguridad integrada de Windows funciona con Microsoft Windows NTLM
(Windows NT Local Area Network (LAN) Manager) o con Kerberos. La
seguridad integrada de Windows tambin utiliza un algoritmo hash para
codificar y decodificar las credenciales del usuario.
Sin embargo, la seguridad integrada de Windows no resulta prctica en las
aplicaciones Web que deben atravesar cortafuegos. Por tanto, es ms adecuada
en escenarios de intranets corporativas.
Cuando se configura IIS, se pueden utilizar mltiples mecanismos de
autenticacin de IIS. Se puede seleccionar el acceso annimo u otros mtodos,
como la autenticacin bsica, implcita o integrada de Windows. Si se utilizan
mltiples mecanismos de autenticacin de IIS, y si la autenticacin annima
falla, el servidor Web intentar utilizar la autenticacin bsica, implcita o
integrada de Windows, dependiendo de los mtodos que estn seleccionados.
Autenticacin implcita
Nota
Seguridad integrada de
Windows
Nota
10 Seguridad en aplicaciones Web con Microsoft ASP.NET
Demostracin: uso de los mecanismos de autenticacin de IIS
Hacer clic conel botnderecho enMod16y hacer
clic enPropiedades
Hacer clic enlapestaaSeguridaddedirectorios
Hacer clic enModificar
Mostrar los mtodos
deautenticacin
*****************************
En esta demostracin, visualizaremos el cuadro de dilogo que se utiliza par
configurar los mecanismos de autenticacin de IIS.
Ejecutar la demostracin
1. En el men Inicio, hacer clic con el botn derecho en Mi PC y hacer clic en
Administrar.
2. En la consola Administracin de equipos, expandir Servicios y
aplicaciones, expandir Internet Information Services, expandir Sitios
Web, y expandir Sitio Web predeterminado.
3. Hacer clic con el botn derecho en la aplicacin Web Pract14VB o
Pract14CS y hacer clic en Propiedades.
4. En el cuadro de dilogo Pract14VB o Propiedades de Pract14CS, en la
ficha Seguridad de directorios, en la seccin Control de autenticacin y
acceso annimo, hacer clic en Modificar.
5. Mostrar los mtodos de autenticacin disponibles.
Introduccin
Seguridad en aplicaciones Web con Microsoft ASP.NET 11
Qu es Secure Sockets Layer?
SSL es un protocolo que se utiliza para transmitir datos de
forma segura atravs de una red. SSL securizalos datos
mediante:
Encriptacin de datos
- Asegura que los datos enviados son ledos nicamente por un
servidor destinatario seguro
Autenticacin de servidor
- Asegura que los datos se envan al servidor correcto
- Utiliza los certificados de servidor y de cliente
Integridad de los datos
- Protege la integridad de los datos
- Incluye un cdigo de autenticacin de mensajes que detecta si un
mensaje ha sido o no modificado
Utiliza HTTPS (HypertextTransferProtocolSecure) para
recuperar una pgina WebASP.NET
*****************************
IIS proporciona a los usuarios un canal de comunicacin seguro al soportar el
protocolo SSL y la encriptacin RSA Data Security tanto en el servidor como
en el cliente.
RSA son las siglas de Rivest, Shamir y Adleman, los nombres de los
cientficos que crearon este algoritmo.
SSL es un protocolo que se utiliza para transmitir datos de modo seguro a travs
de una red. SSL securiza la comunicacin de datos mediante:
Encriptacin de datos
Autenticacin de servidor
Integridad de datos
Cuando se introduce informacin en un formulario HTML y se enva a un sitio
Web, la informacin se transmite desde el navegador al servidor del sitio Web.
En el proceso de transmisin de la informacin, los datos introducidos en el
formulario pueden ser interceptados y ledos.
SSL encripta la informacin transmitida entre un servidor Web y un navegador
Web. La informacin se encripta utilizando un algoritmo pblicamente
conocido y una clave de sesin. El servidor Web genera una clave pblica que
puede utilizar cualquier cliente. El cliente genera una clave de sesin y utiliza la
clave pblica para encriptarla antes de enviarla al servidor Web. Los datos se
transmiten utilizando esta clave de sesin.
Introduccin
Nota
Qu es SSL?
Encriptacin de datos
12 Seguridad en aplicaciones Web con Microsoft ASP.NET
El nmero de bits de la clave de sesin determina la potencia de la encriptacin.
IIS soporta claves de sesin de 40 bits y claves de sesin ms potentes de 128
bits.
Seguridad en aplicaciones Web con Microsoft ASP.NET 13
La siguiente tabla muestra las ventajas e inconvenientes del uso de claves de
sesin de 40 bits y de 128 bits.
Clave de sesin Ventaja Inconveniente
Clave de sesin de
40 bits
La comunicacin es mucho
ms rpida.
No es muy segura, los mensajes
pueden ser modificados.
Clave de sesin de
128 bits
Muy segura, los mensajes
encriptados con clave de
sesin de 128 bits se
consideran inquebrantables.
La comunicacin es bastante ms
lenta; cuanto ms larga es la clave,
ms trabajo deben realizar el
servidor y el navegador para
encriptar y desencriptar el mensaje.
La autenticacin de servidor garantiza que los datos se envan al servidor
correcto y que ste es seguro.
Por ejemplo, podra ocurrir que visitramos un sitio Web que fuera muy
parecido a un sitio Web de comercio electrnico al que accedisemos
frecuentemente. Podra parecer igual que el sitio Web que conocemos, y
proporcionaramos la informacin de nuestra tarjeta de crdito para adquirir un
artculo. Sin embargo, alguien que deseara engaarnos podra crear un sitio
Web idntico al sitio Web de comercio electrnico autntico y robar la
informacin de nuestra tarjeta de crdito.
Para evitar que un sitio Web se haga pasar por otro, utilizamos SSL para
autenticar sitios Web. Cuando instalamos SSL en nuestro servidor Web,
debemos instalar un certificado de servidor. El certificado de servidor contiene
informacin sobre nuestra organizacin, nuestro sitio Web y el emisor del
certificado.
Para funcionar como un ID digital, un certificado de servidor debe estar
firmado por una autoridad de certificacin. La autoridad de certificacin acta
como un tercero de confianza que verifica la identidad de un sitio Web para sus
usuarios.
SSL tambin soporta certificados de cliente. Los certificados de cliente se
utilizan para autenticar navegadores Web en lugar de servidores Web.
SSL protege la integridad de los datos cuando viajan entre el servidor Web y los
navegadores Web. SSL garantiza que los datos recibidos por el servidor de
destino no han sufrido ninguna modificacin.
Cuando los mensajes se transmiten con SSL, incluyen un cdigo de
autenticacin de mensaje. Este cdigo detecta si el mensaje ha sido modificado.
Despus de configurar nuestro servidor para que utilice SSL, podemos solicitar
cualquier pgina de nuestro sitio Web utilizando una conexin segura. Para
recuperar una pgina Web, SSL utiliza Hypertext Transfer Protocol Secure
(HTTPS). Por ejemplo, una direccin con la forma
https://www.nuestrodominio.com/login.aspx en lugar de http://www.
nuestrodominio.com/pagina.aspx.
Esto funciona para cualquier pgina de nuestro sitio Web.
ASP.NET proporciona la propiedad Request.IsSecureConnection que
nos permite determinar si nos encontramos en una conexin https segura.
Autenticacin de
servidor
Certificado de servidor
Certificado de cliente
Integridad de datos
Uso de SSL en pginas
ASP.NET
Nota
14 Seguridad en aplicaciones Web con Microsoft ASP.NET
Leccin: trabajar con autenticacin basada en Windows
Cmo habilitar la autenticacin basada en Windows
Leer informacin del usuario
Demostracin: uso de la autenticacin basada en
Windows
*****************************
La autenticacin basada en Windows debera utilizarse para securizar las
aplicaciones Web cuando sabemos qu usuarios accedern a nuestro sitio Web.
En esta leccin, estudiaremos el procedimiento para utilizar la autenticacin
basada en Windows para securizar nuestras aplicaciones Web.
En esta leccin, aprenderemos a:
Utilizar la autenticacin basada en Windows para securizar aplicaciones
Web.
Leer la identidad del usuario que est autenticado utilizando la autenticacin
basada en Windows.
Introduccin
Objetivos de la leccin
Seguridad en aplicaciones Web con Microsoft ASP.NET 15
Cmo habilitar la autenticacin basada en Windows
Configurar IIS parautilizar uno o varios de los
siguientes mecanismos de autenticacin :
Bsica
Implcita
Seguridad de Windows integrada
Establecer la autenticacin basada en Windows en
Web.config
1
1 1
2
2 2
<system.web>
<Authentication mode="Windows" />
</system.web>
<system.web>
<Authentication mode="Windows" />
</system.web>
*****************************
El proceso de securizar aplicaciones Web mediante la autenticacin basada en
Windows requiere cuatro pasos:
1. Configurar IIS.
2. Configurar la autenticacin en Web.config.
3. Configurar la autorizacin en Web.config.
4. IIS solicita informacin de inicio de sesin a los usuarios.
El primer paso para securizar aplicaciones Web utilizando la autenticacin
basada en Windows implica configurar IIS utilizando uno o varios de los tres
mecanismos de autenticacin:
Autenticacin bsica
Autenticacin implcita
Seguridad integrada de Windows
Normalmente, se habilita la autenticacin bsica o la seguridad integrada
de Windows. Si deseamos que nuestra aplicacin Web sea compatible con otros
navegadores, deberamos utilizar la autenticacin bsica. Si no estamos
utilizando un cortafuegos o servidor proxy, podemos utilizar la seguridad
integrada de Windows.
Introduccin
Configurar IIS
Nota
16 Seguridad en aplicaciones Web con Microsoft ASP.NET
El segundo paso para securizar aplicaciones Web utilizando la autenticacin
basada en Windows es establecer la seguridad de ASP.NET a autenticacin
basada en Windows en el archivo Web.config. Las opciones de configuracin
de seguridad en Web.config se incluyen en las secciones <authentication>,
<authorization>e <identity>.
Establecer el mtodo de autenticacin a Windows para la aplicacin en una
subseccin <authentication>de la seccin <system.web>en Web.config, como
muestra el siguiente ejemplo:
<system.web>
<authentication mode="Windows" />
</system.web>
Configurar la
autenticacin
Seguridad en aplicaciones Web con Microsoft ASP.NET 17
Cmo habilitar la autenticacin basada en Windows (continuacin)
Establecer la autorizacin en Web.config
Cuando los usuarios
acceden al formulario
Web Form, IIS solicita
informacin de inicio
de sesin
<location path="ShoppingCart.aspx">
<system.web>
<Authorization>
<deny users="?"/>
</Authorization>
</system.web>
</location>
<location path="ShoppingCart.aspx">
<system.web>
<Authorization>
<deny users="?"/>
</Authorization>
</system.web>
</location>
4
4 4
3
3 3
*****************************
Securizar las aplicaciones Web utilizando la autenticacin basada en Windows
es un proceso de cuatro pasos:
1. Configurar IIS.
2. Establecer la autenticacin en Web.config.
3. Establecer la autorizacin en Web.config.
4. IIS solicita informacin de inicio de sesin a los usuarios.
Hemos estudiado los dos primeros pasos en el apartado anterior. Esta seccin
explica los dos ltimos pasos.
Para indicar que slo algunas pginas especficas son seguras, debemos crear
una seccin <location>con subsecciones <system.web>y <authorization>para
cada pgina segura de nuestra aplicacin Web:
<location path="ShoppingCart.aspx">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
Las opciones de configuracin que contiene la seccin <location>sern
dirigidas al archivo o directorio que se indica en el atributo path. La seccin
<configuration>puede tener mltiples secciones <location>.
La seccin <location>puede ser un formulario Web Form ASP.NET o
una carpeta. Si se especifica un nombre de carpeta, todas las subcarpetas bajo
ella sern seguras. Para asegurar mltiples formularios Web Forms o carpetas,
se utilizarn mltiples secciones <location>.
Introduccin
Configurar la
autorizacin
Nota
18 Seguridad en aplicaciones Web con Microsoft ASP.NET
En la seccin <system.web>, crear una subseccin <authorization>para
especificar qu tipo de autorizacin se impondr. Crear las etiquetas <allow>o
<deny>para permitir o denegar a los usuarios el acceso a una pgina. En estas
etiquetas, ? indica usuarios annimos y * significa todos los usuarios.
Por ejemplo, el siguiente cdigo deniega el acceso a todos los usuarios
annimos:
<authorization>
<deny users="?" />
</authorization>
El siguiente cdigo permite al usuario Mary acceder a una pgina:
<authorization>
<allow users="Mary" />
</authorization>
No es recomendable autorizar a usuarios individualmente, ya que este
proceso puede revelar informacin confidencial en caso de que el archivo
Web.config sea ledo. Adems, codificar directamente nombres de usuario en el
archivo Web.config no es un planteamiento flexible ya que no permite
modificar esta informacin programticamente en tiempo de ejecucin. La
codificacin directa de usuarios en el archivo Web.config resulta adecuado slo
para realizar pruebas.
El siguiente cdigo deniega a todos los usuarios annimos el acceso a la pgina
ShoppingCart.aspx:
<location path="ShoppingCart.aspx">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
Tras especificar el modo de autenticacin, debemos indicar que toda la
aplicacin Web necesita autorizacin, o especificar qu pginas son seguras y,
por tanto, que requieren autorizacin.
Para indicar que toda la aplicacin es segura, crear una seccin <authorization>
en la seccin <system.web>, como muestra el siguiente cdigo de ejemplo:
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
Nota
Seguridad en aplicaciones Web con Microsoft ASP.NET 19
Utilizamos el elemento <identity>para habilitar la impersonalizacin. La
impersonalizacin permite al servidor ejecutar cdigo bajo el contexto de
seguridad de una entidad solicitante o como un usuario annimo. En ASP.NET,
la impersonalizacin es opcional, y est deshabilitada de forma predeterminada.
El elemento <identity>debe estar bajo la seccin <system.web>en el archivo
Web.config o Machine.config. El siguiente cdigo muestra la sintaxis que se
utiliza con el elemento <identity>:
<identity impersonate="true|false"
username="username"
password="password" />
En el cdigo anterior, los atributos username y password especifican las
credenciales a utilizar si impersonate est establecido a true.
Se utiliza una cuenta especial de Windows denominada ASPNET si
impersonate est establecido a false, el valor predeterminado.
El ltimo paso del proceso para habilitar la autenticacin basada en Windows se
produce cuando los usuarios intentan acceder a un formulario Web Form desde
nuestra aplicacin Web e IIS solicita informacin de inicio de sesin al usuario.
El usuario debe proporcionar su nombre de usuario y contrasea. Si IIS aprueba
las credenciales del usuario, ste obtiene acceso a la pgina Web segura
solicitada.
IIS solicita informacin
de inicio de sesin a los
usuarios
20 Seguridad en aplicaciones Web con Microsoft ASP.NET
Leer informacin del usuario
Tras la autenticacin, el servidor Webpuede leer la
identidad del usuario
lblAuthUser.Text = User.Identity.Name
lblAuthType.Text = User.Identity.AuthenticationType
lblIsAuth.Text = User.Identity.IsAuthenticated
lblAuthUser.Text = User.Identity.Name
lblAuthType.Text = User.Identity.AuthenticationType
lblIsAuth.Text = User.Identity.IsAuthenticated
lblAuthUser.Text = User.Identity.Name;
lblAuthType.Text = User.Identity.AuthenticationType;
lblIsAuth.Text = User.Identity.IsAuthenticated;
lblAuthUser.Text = User.Identity.Name;
lblAuthType.Text = User.Identity.AuthenticationType;
lblIsAuth.Text = User.Identity.IsAuthenticated;
*****************************
Una vez finalizado el proceso de autenticacin basada en Windows, el servidor
Web puede leer la identidad del usuario desde cualquier pgina de la aplicacin
Web.
El servidor Web puede leer la identidad del usuario utilizando
User.Identity.Name. El servidor Web tambin puede identificar el mecanismo
de autenticacin de IIS que se utiliza para autenticar al usuario utilizando
User.Identity.AuthenticationType. Adems, el servidor Web puede
comprobar si el usuario est autenticado utilizando
User.Identity.IsAuthenticated.
El siguiente cdigo de ejemplo muestra cmo se permite al servidor Web leer la
identidad del usuario:
lblAuthUser.Text = User.Identity.Name
lblAuthType.Text = User.Identity.AuthenticationType
lblIsAuth.Text = User.Identity.IsAuthenticated
lblAuthUser.Text = User.Identity.Name;
lblAuthType.Text = User.Identity.AuthenticationType;
lblIsAuth.Text = User.Identity.IsAuthenticated;
User.Identity es un objeto de la clase WindowsIdentity.
Introduccin
Visual Basic .NET
C#
Nota
Seguridad en aplicaciones Web con Microsoft ASP.NET 21
Demostracin: uso de la autenticacin basada en Windows
Abrir IIS y configurarlo nicamente con
autenticacin annima
Crear un nuevo usuario en el equipo local
Abrir Web.configy configurarlo para
soportar autenticacin y autorizacin
Ejecutar la aplicacin WebASP.NET
segura
Los estudiantes pueden acceder a la
aplicacin Web ASP.NET segura en el
equipo del instructor
*****************************
En esta demostracin, veremos cmo configurar IIS para utilizar la
autenticacin basada en Windows con autenticacin bsica de IIS.
Seguidamente, veremos cmo crear un nuevo usuario en el servidor local, y
cmo configurar la autenticacin y autorizacin en Web.config. A
continuacin, veremos algunas demostraciones de acceso a pginas seguras y
no seguras. Finalmente, aprenderemos a conectarnos a una pgina segura en el
equipo del instructor.
Los archivos para esta demostracin se encuentran en el proyecto Pract14VB o
Pract14CS dentro del fichero demos14.zip.
Ejecutar la demostracin
1. Hacer clic con el botn derecho en Mi PC y hacer clic en Administrar.
2. Expandir Servicios y aplicaciones, expandir Internet Information
Services, y hacer clic en Sitios Web.
3. Hacer clic con el botn derecho en Sitio Web predeterminado y hacer clic
en Propiedades.
4. Hacer clic en la ficha Seguridad de directorios, y clic en Modificar para
abrir el cuadro de dilogo Mtodos de autenticacin de IIS.
5. Seleccionar la casilla de verificacin de autenticacin bsica (la contrasea
se enva en texto claro) y hacer clic en S en el cuadro de dilogo
Administrador de Servicios de Internet.
Comprobar que est seleccionada la casilla de verificacin de Acceso
Introduccin
Configurar IIS con
autenticacin bsica
Nota
22 Seguridad en aplicaciones Web con Microsoft ASP.NET
annimo. Verificar que no estn seleccionadas las casillas de verificacin de
Autenticacin implcita para servidores de dominios Windows y
Autenticacin integrada de Windows.
6. Escribir nombreequipo en el campo Dominio predeterminado, ya que esta
demostracin se realizar con una cuenta local creada en este equipo.
7. Hacer clic en Aceptar para cerrar el cuadro de dilogo Mtodos de
autenticacin de IIS.
8. Hacer clic en Aceptar para cerrar el cuadro de dilogo Propiedades del
sitio Web predeterminado. En el cuadro de dilogo Herencia omitida,
hacer clic en Aceptar.
9. En la consola Administracin de equipos, expandir Herramientas del
sistema, y expandir Usuarios y grupos locales.
10. Hacer clic con el botn derecho en la carpeta Usuarios y clic en Nuevo
usuario:
Introducir la siguiente informacin en el cuadro de dilogo Nuevo usuario.
Campo Valor
Nombre de usuario someone
Nombre completo someone
Descripcin Cuenta de demostracin de someone
Contrasea Secreto1
Confirmar contrasea Secreto1
a. Desactivar la casilla de verificacin de El usuario debe cambiar la
contrasea en el siguiente inicio de sesin.
b. Seleccionar la casilla de verificacin de El usuario no puede cambiar
la contrasea.
c. Hacer clic en Crear y clic en Cerrar.
En el lado derecho de la ventana del cuadro de dilogo Administracin de
equipos, debera aparecer el usuario someone.
11. Abrir el proyecto Pract14VB o Pract14CS y visualizar el archivo
Web.config en Microsoft Visual Studio .NET.
Una seccin <authentication>est configurada con autenticacin basada en
Windows.
Son necesarias dos secciones <location>para securizar dos pginas:
SecurePageDemo1.aspx y SecurePageDemo2.aspx. Con la configuracin
actual de IIS, si un usuario intenta acceder a una de estas pginas, se
utilizar la autenticacin bsica. Si un usuario intenta acceder las otras
pginas, se utilizar la autenticacin annima.
12. Abrir la pgina de cdigo subyacente SecurePageDemo1.aspx y explicar el
cdigo User.Identity.Name y User.Identity.AuthenticationType.
No se requiere ninguna instruccin Imports para utilizar
User.Identity.xxx.
13. Generar el proyecto Pract14VB o Pract14CS en la solucin 2310Demos.
14. Abrir un nuevo navegador e ir a:
Crear un nuevo usuario
en el equipo local
Mostrar la configuracin
de seguridad en el
archivo Web.config
Mostrar el nombre y tipo
de autenticacin en un
formulario Web Form.
Note
Seguridad en aplicaciones Web con Microsoft ASP.NET 23
http://localhost/Pract14VB/NonSecurePageDemo.aspx
http://localhost/Pract14CS/NonSecurePageDemo.aspx
Visual Basic .NET
C#
24 Seguridad en aplicaciones Web con Microsoft ASP.NET
15. Ir a:
http://localhost/Pract14VB/SecurePageDemo1.aspx
http://localhost/Pract14CS/SecurePageDemo1.aspx
Mostrar que aparece el cuadro de dilogo Connect to localhost.
16. Hacer clic en Cancelar y mostrar que se obtiene un error de servidor
porque se deniega el acceso.
17. Ir a:
http://localhost/Pract14VB/SecurePageDemo2.aspx
http://localhost/Pract14CS/SecurePageDemo2.aspx
Mostrar que tambin aparece el cuadro de dilogo Connect to localhost.
18. Escribir las credenciales Nombre de usuario como someone y Contrasea
como Secreto1 y hacer clic en Aceptar.
19. La pgina SecurePageDemo2.aspx debera mostrar el nombre de usuario
someone y el tipo de autenticacin bsica.
Ahora, podemos acceder a cualquier pgina segura, siempre que no
cerremos el navegador. Si cerramos el navegador, deberemos repetir el
proceso de autenticacin.
20. Ir a:
http://localhost/Pract14VB/SecurePageDemo1.aspx
http://localhost/Pract14CS/SecurePageDemo1.aspx
Mostrar que esta vez no se solicitan las credenciales.
21. Indicar a los estudiantes que vayan a:
http://Nombreequipoinstructor/Pract14VB/SecurePageDemo1.aspx
http://Nombreequipoinstructor/Pract14CS/SecurePageDemo1.aspx
Escribir las credenciales someone y Secreto1 cuando se solicite.
Tras introducir las credenciales, los estudiantes deberan poder ver
SecurePageDemo1.aspx y SecurePageDemo2.aspx.
Visual Basic .NET
C#
Visual Basic .NET
C#
Visual Basic .NET
C#
Los estudiantes acceder
al equipo del instructor
Visual Basic .NET
C#
Seguridad en aplicaciones Web con Microsoft ASP.NET 25
Leccin: trabajar con autenticacin basada en
formularios
Descripcin de la autenticacin basada en formularios
Multimedia: autenticacinbasada en formularios
Cmo habilitar la autenticacin basada en formularios
Crear una pgina de inicio de sesin
Demostracin: uso de la autenticacin basada en
formularios
*****************************
El mtodo de autenticacin que ms se utiliza habitualmente para securizar
aplicaciones Web con ASP.NET es la autenticacin basada en formularios.
En esta leccin, estudiaremos la arquitectura basada en formularios, y los pasos
para habilitar la autenticacin basada en formularios. Tambin estudiaremos
cmo configurar la seguridad en Web.config, y crear una pgina de inicio de
sesin.
En esta leccin, aprenderemos a:
Identificar la serie de eventos que tiene lugar durante la autenticacin
basada en formularios.
Identificar los pasos para habilitar la autenticacin basada en formularios.
Configurar autenticacin y autorizacin en un archivo Web.config.
Describir cmo crear una pgina de inicio de sesin.
Introduccin
Objetivos de la leccin
26 Seguridad en aplicaciones Web con Microsoft ASP.NET
Descripcin de la autenticacin basada en formularios
El cliente solicita pgina
Autorizado
Autenticacin
ASP.NET Forms
No
autenticado
Autenticado
Pginadeinicio
(los usuarios
introducen sus
credenciales)
Autenticado
Cookiede
autenticacin
Autorizado
No
autenticado
Acceso denegado
Pginasegura
solicitada
IIS
Nombre usuario
Contrasea
Alguien
***********
Enviar
Enviar
1
1 1
2
2 2
3
3 3
4
4 4
6
6 6
5
5 5
7
7 7
*****************************
Cuando un usuario solicita una pgina Web que est protegida por
autenticacin basada en formularios, la solicitud debe pasar primero por IIS.
Por ello, debemos establecer la autenticacin de IIS a acceso annimo.
Establecer IIS a annimo requiere que todas las solicitudes pasen por ASP.NET
antes de ser autenticadas.
En la autenticacin basada en formularios, se produce la siguiente serie de
eventos:
1. Un cliente genera una solicitud de una pgina .aspx protegida.
2. IIS recibe la solicitud y la pasa a ASP.NET. El modo de autenticacin est
establecido en acceso annimo y, por ello, la solicitud pasa directamente por
IIS.
3. ASP.NET comprueba si la solicitud dispone de una cookie de autenticacin
vlida anexa. Si es as, significa que las credenciales del usuario ya han sido
confirmadas y que la solicitud se ha examinado para su autorizacin.
ASP.NET realiza la verificacin de autorizacin comparando las
credenciales que contiene la cookie de autorizacin de la solicitud con las
opciones de configuracin de autorizacin del archivo Web.config. Si el
usuario es autorizado, se concede el acceso a la pgina segura solicitada.
4. Si la solicitud no tiene ninguna cookie anexa, ASP.NET redirecciona la
solicitud a una pgina de inicio de sesin (cuya ruta reside en el archivo de
configuracin de la aplicacin), donde el usuario introduce las credenciales
requeridas, normalmente un nombre y una contrasea.
Introduccin
Serie de eventos que
tienen lugar durante la
autenticacin basada en
formularios
Seguridad en aplicaciones Web con Microsoft ASP.NET 27
5. El cdigo de la aplicacin en la pgina de inicio de sesin comprueba las
credenciales para confirmar su autenticidad y, si son autenticadas, adjunta a
la solicitud una cookie que contiene las credenciales.
6. Si la autenticacin falla, la solicitud se devuelve con un mensaje de Acceso
denegado.
7. Si el usuario es autenticado, ASP.NET comprueba la autorizacin, como en
el paso 3, y puede permitir el acceso a la pgina segura solicitada
originalmente o redireccionar la solicitud a otra pgina, dependiendo del
diseo de la aplicacin.
Por otra parte, ASP.NET puede dirigir la solicitud a un formulario de
autorizacin personalizado donde se examinan las credenciales para la
autorizacin a la pgina protegida. Normalmente, si la autorizacin falla, la
solicitud se devuelve con un mensaje de Acceso denegado.
28 Seguridad en aplicaciones Web con Microsoft ASP.NET
Cmo habilitar la autenticacin basada en formularios
Configurar IIS parautilizar autenticacin annima
Establecer la autenticacin basada en formularios en
Web.config
Establecer la autorizacin
Generar un formulario Web
Formde inicio de sesin
1
1 1
2
2 2
3
3 3
4
4 4
<Authentication mode="Forms" >
<forms name=".namesuffix"
loginUrl="login.aspx" />
</Authentication>
<Authentication mode="Forms" >
<forms name=".namesuffix"
loginUrl="login.aspx" />
</Authentication>
*****************************
Para habilitar la autenticacin basada en formularios para nuestra aplicacin
Web, debemos realizar los cuatro pasos siguientes:
1. Configurar IIS para utilizar la autenticacin annima, para que el usuario
sea autenticado por ASP.NET y no por IIS.
2. Configurar el mtodo de autenticacin basado en formularios (Forms) para
la aplicacin en una subseccin <authentication>de la seccin
<system.web>en Web.config, como muestra el siguiente ejemplo:
<system.web>
<authentication mode="Forms">
<forms name=".namesuffix" loginUrl="login.aspx" />
</authentication>
</system.web>
Si se establece el modo de autenticacin en Forms, se debe agregar un
elemento <forms>a la seccin <authentication>, como muestra el ejemplo
anterior.
En la seccin <forms>, se configura la cookie. Establecer el atributo name
con el sufijo que utilizarn las cookies y el atributo loginUrl con la URL
(Uniform Resource Locator) de la pgina a la que se redirigen las
solicitudes no autenticadas.
3. Configurar la seccin <authorization>de Web.config. El proceso de
configurar la autorizacin para autenticacin basada en formularios es
idntico al proceso de la autenticacin basada en Windows.
Al configurar la seccin <authorization>en Web.config, podemos denegar
o permitir a los usuarios el acceso a nuestra aplicacin Web. Tambin
Introduccin
Habilitar la autenticacin
basada en formularios
Configurar la
autenticacin
Configurar la
autorizacin
Seguridad en aplicaciones Web con Microsoft ASP.NET 29
podemos indicar que toda la aplicacin Web requiere autorizacin o
especificar qu pginas son seguras y, por tanto, requieren autorizacin.
4. Generar un formulario Web Form de inicio de sesin, login.aspx.
Login.aspx puede ser una pgina sencilla con dos campos, uno para el
nombre de usuario y otro para la contrasea. Login.aspx requiere que los
usuarios introduzcan su nombre de usuario y contrasea para establecer
autenticacin y poder acceder a nuestra aplicacin Web.
Generar un formulario
Web Formde inicio de
sesin
30 Seguridad en aplicaciones Web con Microsoft ASP.NET
Crear una pgina de inicio de sesin
Aadir unareferenciaaSystem.Web.Security
Lapginadeinicio desesinverificay examinalas credenciales deun
usuario
Leer las credenciales del usuario desdeunacookie
User.Identity.Namedevuelve el valor guardado por
FormsAuthentication.RedirectFromLoginPage
Sub cmdLogin_Click(s As Object, e As eventArgs)
If (login(txtEmail.Text, txtPassword.Text))
FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, False)
End If
End Sub
Sub cmdLogin_Click(s As Object, e As eventArgs)
If (login(txtEmail.Text, txtPassword.Text))
FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, False)
End If
End Sub
private void cmdLogin_Click(object sender, EventArgs e)
{
if (login(txtEmail.Text, txtPassword.Text))
FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, false);
}
private void cmdLogin_Click(object sender, EventArgs e)
{
if (login(txtEmail.Text, txtPassword.Text))
FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, false);
}
*****************************
Durante la autenticacin, todas las solicitudes son redirigidas a la pgina de
inicio de sesin especificada en el atributo loginUrl de la etiqueta <forms>. La
pgina de inicio de sesin verifica y examina las credenciales de un usuario.
Si el modo de autenticacin est establecido a Forms, ASP.NET busca una
cookie de autenticacin adjunta a la solicitud de una pgina segura. Si
ASP.NET no encuentra la cookie de autenticacin, redirecciona la solicitud a la
pgina de inicio de sesin especificada.
En la pgina de inicio de sesin, el usuario introduce las credenciales
requeridas. La pgina las examina, bien a travs de cdigo especfico de la
aplicacin o invocando a FormsAuthentication.Authenticate. Si las
credenciales con vlidas, se genera una cookie y el usuario es redirigido a la
pgina solicitada originalmente invocando a
FormsAuthentication.RedirectFromLoginPage. Sin embargo, si las
credenciales no son vlidas, el usuario permanece en la pgina de inicio de
sesin y recibe un mensaje que indica que las credenciales de inicio de sesin
no son vlidas.
El mtodo RedirectFromLoginPage toma dos parmetros: userName, que
especifica el nombre del usuario para la autenticacin basada en formularios, y
createPersistentCookie. Si el valor de createPersistentCookie es true, una
cookie de autenticacin persistente, una cookie escrita en el sistema de archivos
cliente, se crea en el equipo del usuario. De lo contrario, se crea una cookie de
autenticacin temporal (no persistente).
Introduccin
Cmo funciona una
pgina de inicio de
sesin?
Seguridad en aplicaciones Web con Microsoft ASP.NET 31
La siguiente tabla muestra una lista todos los mtodos del objeto
FormsAuthentication, que pueden utilizarse en el proceso de autenticacin.
Mtodo Funcin
Authenticate Dadas las credenciales suministradas, este mtodo intenta
validar las credenciales comparndolas con las que
contiene el almacn de credenciales configurado.
GetAuthCookie Crea una cookie de autenticacin para un determinado
nombre de usuario. La cookie no se establece como parte
de la respuesta saliente; por tanto, una aplicacin puede
tener un mayor control sobre cmo se emite la cookie.
GetRedirectUrl Devuelve la URL redirigida para la solicitud original que
ha provocado la redireccin a la pgina de inicio de
sesin.
RedirectFromLoginPage Redirige a los usuarios autenticados a la URL solicitada
originalmente.
SetAuthCookie Crea un ticket de autenticacin para el userName dado y
lo adjunta a la coleccin de cookies de la respuesta
saliente. No realiza una redireccin.
SignOut Dado un usuario autenticado, invocar SignOut elimina el
ticket de autenticacin estableciendo un SetCookie con
un valor vaco. De este modo, se eliminan las cookies
duraderas y las cookies por sesin.
Para poder utilizar la clase FormsAuthentication, deberamos referenciar la
biblioteca System.Web.Security utilizando Imports o using.
Una pgina de inicio de sesin es simplemente una pgina ASP.NET con un
formulario HTML, un botn Submit y un procedimiento de evento Click para
el botn Submit.
El siguiente es un ejemplo de un formulario en una pgina de inicio de sesin:
<form id="Login" method="post" runat="server">
<P>Email: <asp:TextBox id="txtEmail" runat="server">
</asp:TextBox></P>
<P>Password<asp:TextBox id="txtPassword" TextMode="password"
runat="server">
</asp:TextBox></P>
<P><asp:Button id="cmdLogin" Text="Sign In Now"
OnClick="cmdLogin_Click"
runat="server">
</asp:Button></P>
<P><asp:Label id="lblInfo" runat="server">
</asp:Label></P>
</form>
En el procedimiento de evento Click del botn Submit, se valida la
informacin que se introduce en el formulario, y si sta es vlida, invocar
FormsAuthentication.RedirectFromLoginPage. El mtodo
RedirectFromLoginPage emite la cookie y, a continuacin, redirige al usuario
a la pgina solicitada originalmente.
Crear una pgina de
inicio de sesin
32 Seguridad en aplicaciones Web con Microsoft ASP.NET
El siguiente cdigo de ejemplo utiliza una funcin personalizada denominada
Login para validar el nombre de usuario y la contrasea, e invoca
RedirectFromLoginPage si el nombre de usuario y la contrasea son vlidos:
Private Sub cmdLogin_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles cmdLogin.Click
Dim strCustomerId As String
'Validate User Credenciales
strCustomerId = Login(txtEmail.Text, txtPassword.Text)
If (strCustomerId <> "") Then
FormsAuthentication.RedirectFromLoginPage _
(strCustomerId, False)
Else
lblInfo.Text = "Invalid Credenciales: Please try again"
End If
End Sub
private void cmdLogin_Click(object sender, EventArgs e)
{
string strCustomerId;
//Validate User Credenciales
strCustomerId = Login(txtEmail.Text, txtPassword.Text);
if (strCustomerId != "")
{
FormsAuthentication.RedirectFromLoginPage
(strCustomerId, false);
}
else
{
lblInfo.Text = "Invalid Credenciales: Please try again";
}
}
Despus de que un usuario haya sido autenticado, podemos obtener su nombre
de usuario programticamente utilizando la propiedad User.Identity.Name.
Esta propiedad resulta til para generar una aplicacin que utilice el nombre del
usuario como una clave para guardar informacin en una tabla de una base de
datos o un recurso del directorio.
Tambin podemos identificar dinmicamente el mecanismo de autenticacin
(Forms en este caso) utilizando User.Identity.AuthenticationType y ver si el
usuario est autenticado utilizando User.Identity.IsAuthenticated.
Con la autenticacin basada en formularios, User.Identity es un objeto de la
clase FormsIdentity.
Cuando se utiliza la autenticacin basada en formularios, la contrasea
que un usuario introduce en la pgina de inicio de sesin se enva a travs de la
red en texto claro. Es importante utilizar SSL para encriptar estas contraseas.
Visual Basic .NET
C#
Leer credenciales desde
cookies
Nota
Seguridad en aplicaciones Web con Microsoft ASP.NET 33
Demostracin: uso de la autenticacin basada en formularios
Abrir IIS y configurar paraautenticacin
annima
Abrir Web.configy configurarlo para
autenticacin y autorizacin
Abrir la pgina de inicio de sesin y
mostrar el cdigo
Ejecutar la aplicacin WebASP.NET
Los estudiantes pueden acceder a la
aplicacin Web ASP.NET segura en el
equipo del instructor
*****************************
En esta demostracin, veremos cmo configurar IIS para utilizar la
autenticacin basada en formularios con autenticacin annima; a continuacin,
veremos cmo configurar la autenticacin y autorizacin en el archivo
Web.config. Veremos cmo funciona la pgina de inicio de sesin, y algunas
demostraciones de acceso a pginas seguras y a pginas no seguras. Finalmente,
aprenderemos a conectar a una pgina segura en el equipo del instructor.
Los archivos para demostracin se encuentran en el proyecto Pract14VB o
Mob16CS de la solucin 2310Demos.
Ejecutar la demostracin
1. Hacer clic con el botn derecho en Mi PC y clic en Administrar.
2. Ir a Servicios y aplicaciones, expandir Internet Information Services, y
hacer clic en Sitios Web.
3. Hacer clic con el botn derecho en Sitio Web predeterminado y hacer clic
en Propiedades.
4. Hacer clic en la ficha Seguridad de directorios y clic en Modificar para
abrir el cuadro de dilogo Mtodos de autenticacin de IIS.
5. Desactivar la casilla de verificacin de Autenticacin bsica (la contrasea
se enva en texto claro).
Verificar que las casillas de verificacin Autenticacin implcita para
servidores de dominios Windows y Autenticacin integrada de Windows
estn desactivadas y que la casilla de verificacin Acceso annimo est
seleccionada.
Introduccin
Configurar IIS para
acceso annimo
Nota
34 Seguridad en aplicaciones Web con Microsoft ASP.NET
6. Hacer clic en Aceptar.
7. Hacer clic en Aceptar.
8. Hacer clic en Aceptar en el cuadro de dilogo Herencia omitida.
9. Abrir el archivo Web.config.
Utilizando los comentarios <!-- y -->, comentar la seccin <system.web>
que contiene el modo de autenticacin Windows y quitar los comentarios
de la seccin <system.web>que contiene el modo de autenticacin
Forms.
Explicar la nueva seccin <authentication>que redirige todas las solicitudes
no autenticadas a la pgina LoginDemo.aspx.
Las mismas dos pginas (SecurePageDemo1.aspx y
SecurePageDemo2.aspx) se han configurado como pginas seguras.
10. Guardar los cambios.
11. Abrir la pgina de cdigo subyacente LoginDemo.aspx.vb o
LoginDemo.asox.cs.
Mostrar lo siguiente:
El procedimiento de evento cmdLogin_Click que valida el nombre de
usuario y contrasea invocando la funcin Login, e invocar
RedirectFromLoginPage, si las credenciales son vlidas.
El primer parmetro de RedirectFromLoginPage es la identidad de
usuario que deseamos guardar se encuentra en la cookie. A
continuacin, durante la sesin, esta identidad puede ser leda desde
cualquier pgina utilizando User.Identity.Name.
RedirectFromLoginPage crea una cookie de autenticacin temporal
(no persistente) (segundo parmetro establecido a false).
Para utilizar RedirectFromLoginPage, debemos importar
System.Web.Security.
El cdigo de la funcin Login. Mostrar cmo la funcin Login invoca el
procedimiento almacenado EmployeeLogin para verificar las
credenciales introducidas consultndolas a la base de datos.
Abrir Microsoft SQL Server