Sie sind auf Seite 1von 161

ndice_

Introduccin a .NET

1. INTRODUCCIN ...............................................................................3
2. MICROSOFT .NET FRAMEWORK.........................................................3
2.1. CLR (COMMON LANGUAGE RUNTIME) .......................................3
2.1.1. CLS (Common Language Specification)..........................4
2.1.2. CTS (Common Type System) .........................................4
2.1.3. CIL (Common Intermediate Language) .........................4
2.2. BIBLIOTECA DE CLASES .NET FRAMEWORK ..............................5
3. QU ES MICROSOFT VISUAL STUDIO ................................................7
4. CERTIFICACIONES OFICIALES PARA DESARROLLADORES EN
VISUAL STUDIO ................................................................................8
GLOSARIO ...........................................................................................11
REFERENCIAS WEB ..............................................................................15

formacin digital

BIBLIOGRAFA ....................................................................................17

Introduccin a .NET
1.

INTRODUCCIN

En este tema estudiaremos algunos conceptos bsicos sobre la plataforma .NET, tambin
conocida como .NET Framework. Asimismo, veremos qu es Visual Studio e indicaremos
algunas certificaciones oficiales para desarrolladores.
Esta base terica nos facilitar el entendimiento y contextualizacin de ASP.NET como un
framework de .NET para el desarrollo de aplicaciones web.

2.

MICROSOFT .NET FRAMEWORK

Microsoft .NET Framework es un componente integral de Windows que permite el


desarrollo de aplicaciones a travs del uso de un conjunto de herramientas y servicios que
proporciona, los cuales podemos agrupar en dos bloques principales:

El Entorno de Ejecucin Comn o Common Language Runtime (CLR) es el ncleo


de .NET Framework. Se encarga de la gestin y ejecucin del cdigo, as como de
proporcionar servicios para facilitar el proceso de desarrollo.

La Biblioteca de clases de .NET Framework. Este conjunto de clases constituye un


API de servicios para utilizar en la programacin de nuestras aplicaciones. Por ejemplo,
las clases para acceder a bases de datos (ADO.NET), para gestionar ficheros XML,
gestin de hilos (threading), para el desarrollo de aplicaciones web (ASP.NET), etc.

Por otra parte, ASP.NET es conjunto de tecnologas de Microsoft .NET Framework para la
creacin de aplicaciones y servicios web.
2.1.

CLR (COMMON LANGUAGE RUNTIME)

El CLR es la base del sistema Microsoft .NET. Este motor hace que sea posible el desarrollo
basado en mltiples lenguajes y la integracin y ejecucin de todos ellos en el entorno .NET.
Esto se realiza gracias al seguimiento de las especificaciones del CLR por parte de los
creadores de lenguajes y herramientas de desarrollo.

Introduccin a .NET
2.1.1. CLS (Common Language Specification)
La

Especificacin

Comn

de

Lenguajes

se

conoce

como

CLS

(Common

Language

Specification) y consiste en un conjunto de caractersticas comunes que deben cumplir todos


los lenguajes de la plataforma para poder integrarse entre s. Por ejemplo, es posible escribir
una clase en C# y heredar de dicha clase desde Visual Basic, gracias a que el entorno de
ejecucin es comn y el cdigo compilado no pasa directamente a cdigo ejecutable puro,
sino a un cdigo intermedio denominado IL (Intermediate Language).
Por ello, podemos decir que .NET Framework tiene soporte multilenguaje.
2.1.2. CTS (Common Type System)
Estas siglas corresponden a Common Type System o Sistema Comn de Tipos. Es el
mecanismo del CLR que permite definir el modo en que los tipos de datos sern creados y
manipulados por el entorno de ejecucin de .NET Framework. As, todos los lenguajes
pueden trabajar basndose en una serie de especificaciones que hacen posible el intercambio
de informacin y el trabajo con las libreras bsicas de la plataforma .NET.
2.1.3. CIL (Common Intermediate Language)
CIL es un lenguaje intermedio entre el cdigo fuente y el cdigo mquina en el momento de
la compilacin.
Es un lenguaje parecido al bytecode de Java, hacia el cual cualquier compilador de un
lenguaje integrado en Microsoft .NET (C#, Visual Basic, etc.) deber compilar su cdigo
fuente, ya que es el nico entendible por el CLR, el cual lo interpreta y ejecuta en la
mquina.
Lo que hace posible que todos los lenguajes usados en .NET puedan compilarse a un
lenguaje unificado (IL) es que cumplen con una especificacin comn (CLS) y con un sistema
comn de tipos (CTS).
El cdigo auxiliar generado se compila a continuacin en cdigo nativo y se optimiza para la
arquitectura de hardware concreta en la que se ejecuta, utilizando los servicios de
compilacin JIT (Just In Time) de CLR. En resumen, el JIT es otro elemento de .NET
Framework que se encarga de convertir el cdigo CIL en cdigo de nuestro sistema
operativo.

Introduccin a .NET
La siguiente figura muestra un diagrama con el proceso de generacin de lenguaje
intermedio a partir del cdigo fuente:

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

CLS
Compilador
CTS

Cdigo IL

Interprete a
cdigo nativo

Mquina

2.2. BIBLIOTECA DE CLASES .NET FRAMEWORK


La biblioteca de clases es un componente de .NET Framework que incluye clases,
interfaces y tipos de valores que proporcionan acceso a funcionalidades del sistema como:

Representar tipos de datos base y excepciones.

Encapsular estructuras de datos.

Realizar E/S.

Obtener acceso a informacin sobre tipos cargados.

Control y comprobacin de seguridad de .NET Framework.

Proporcionar acceso a datos, interfaz grfica para el usuario (GUI).

Introduccin a .NET
La biblioteca de clases es, por tanto, una coleccin orientada a objetos de tipos reutilizables
y empleada para desarrollar aplicaciones nuevas, facilitando as el trabajo, pues reutilizamos
elementos ya creados no teniendo que programarlos desde cero.
Por otra parte, en la biblioteca de clases de .NET Framework encontramos los tipos. Estos
son la base para compilar aplicaciones, componentes y controles de .NET. Dichos tipos
utilizan un esquema sintctico de punto, el cual sirve para representar una jerarqua. Por
ejemplo, en System.IO, donde System es un espacio de nombres superior en la jerarqua e
incluye a IO, mediante este esquema se agrupan los tipos relacionados en los denominados
espacios de nombres o namespaces, que son agrupaciones de elementos relacionados para
evitar ambigedades y hacer ms fcil la bsqueda y referencia a cada uno de ellos.
Los espacios de nombres ms usados son:

ESPACIO DE NOMBRES

UTILIDAD DE LOS TIPOS DE DATOS QUE CONTIENE


Tipos de uso muy frecuente como: los tipos bsicos, tablas,

System

excepciones, fechas, nmeros aleatorios, recolector de basura,


entrada/salida en consola, etc.

System.Collections

System.Data

Colecciones de datos de uso comn como: pilas, colas, listas,


diccionarios, etc.
Manipulacin de bases de datos. Forman la denominada arquitectura
ADO.NET.

System.IO

Manipulacin de ficheros y otros flujos de datos.

System.Net

Realizacin de comunicaciones en red.

System.Reflection
System.Runtime.Remoting
System.Security
System.Threading
System.Web.UI.WebControls
System.XML
System.Linq

Acceso a los metadatos que acompaan a los mdulos de cdigo.


Acceso a objetos remotos.
Acceso a la poltica de seguridad en que se basa el CLR.
Manipulacin de hilos.
Creacin de interfaces de usuario basadas en ventanas para
aplicaciones web.
Acceso a datos en formato XML.
Consultar archivos XML, bases de datos relacionales, objetos .NET
y/u otro tipo de estructura de datos.

Introduccin a .NET
3.

QU ES MICROSOFT VISUAL STUDIO

Microsoft Visual Studio es un entorno de desarrollo integrado, o IDE (Integrated

Development Environment), para sistemas operativos Windows, el cual soporta diferentes


lenguajes de programacin, entre ellos Visual C++, Visual C# y Visual Basic . La definicin
de IDE hace referencia a un programa o aplicacin que ofrece al programador un entorno
donde desarrollar las aplicaciones, que comprende habitualmente un editor de cdigo, un
compilador, un depurador y un constructor de interfaz grfica.

Ejemplo de entorno de desarrollo. Visual Studio 2010.

Adems de Microsoft Visual Studio, existen otros IDE muy conocidos, como Visual Web
Developer y WebMatrix.
Con Visual Studio el desarrollador puede crear aplicaciones de escritorio, aplicaciones de
negocio, formularios web, aplicaciones para Azure (cloud computing), para Windows Phone
7, etc., lo que permite la comunicacin entre diferentes medios y dispositivos.

Introduccin a .NET
Desde la primera versin de Visual Studio lanzada en 1998 y denominada Visual Studio
6.0, han sido desarrolladas cinco versiones ms: Visual Studio .NET (2002), Visual Studio
.NET (2003), Visual Studio 2005, Visual Studio 2008 y Visual Studio 2010, lanzada
oficialmente el 12 de abril de 2010.
Cada

versin

ha

ido introduciendo

nuevas

utilidades

frameworks

de

desarrollo,

incorporndose en la versin actual, el .NET 4.0, herramientas para el desarrollo de


aplicaciones para Windows 7.
Adicionalmente Visual Studio incorpora caractersticas interesantes. As, nos ofrece la
posibilidad de:

Utilizar mltiples monitores.

Acoplar y desacoplar las ventanas en diferentes lugares de la interfaz de trabajo.

Crear aplicaciones para mltiples plataformas de Microsoft (Windows, Azure, Windows


Phone 7 o SharePoint).

4.

Desarrollar aplicativos para pantallas multitctiles.

CERTIFICACIONES OFICIALES PARA DESARROLLADORES EN VISUAL STUDIO

Microsoft dispone de un completo catlogo de certificaciones de cada uno de sus productos,


organizadas por niveles. En la tecnologa que nos ocupa, encontramos para la versin de
.NET 4.0 dos niveles de certificaciones profesionales:

MCTS (Microsoft Certified Technology Specialist). Esta certifica a los profesionales


como especialistas en diferentes tecnologas de la plataforma. Para obtener cada una de
estas certificaciones es necesario realizar el correspondiente examen oficial.

MCITP (Microsoft Certified IT Professional). Se trata de certificaciones de alto


nivel. Engloba los certificados MCPD (Microsoft Certified Professional Developer), en los
entornos Windows, Web y Azure. Estas certificaciones requieren como requisito previo
disponer de varias certificaciones MCTS y superar un examen.

recuerde_

Introduccin a .NET

Visual Studio es un entorno de desarrollo integrado para sistemas


operativos Windows y diseado especialmente para la plataforma .NET.

Un entorno de desarrollo est compuesto por un editor de cdigo, un


compilador, un depurador y un constructor de interfaz grfica.

ASP.NET es un conjunto de tecnologas de Microsoft .NET Framework para la


creacin de aplicaciones y servicios web.

Microsoft dispone de diferentes niveles de certificacin, segn la tecnologa


y nivel de especializacin.

NET Framework es un componente integral de Windows que permite el


desarrollo de aplicaciones a travs del uso de un conjunto de herramientas y
servicios que proporciona.

El CLR es la base del sistema Microsoft .NET. Este motor hace que sea
posible el desarrollo basado en mltiples lenguajes (tienen que cumplir una
especificacin comn, CLS), y la integracin y ejecucin de todos ellos en el
entorno .NET -esta integracin es posible gracias al sistema comn de tipos,
CTS-.

Las bibliotecas de clase son un componente de .NET Framework, las cuales


forman un espacio de nombres organizados jerrquicamente.

glosario_

Introduccin a .NET
A
API

(Application

Programming

Interface

Interfaz

de

programacin

de

aplicaciones). Es el conjunto de funciones y procedimientos que ofrece una


biblioteca especfica para la comunicacin entre componentes software.
ASP (Active Server Pages). Pginas activas del servidor Internet Information
Server. ASP es la versin anterior a la tecnologa ASP.NET de Microsoft.
C
CLR (Common Language Runtime). Motor de ejecucin comn incluido en el
paquete Microsoft .NET.
CSS (Cascading Style Sheets - Hojas de Estilo en Cascada). Se utilizan para dar
formato a documentos HTML o XML, separando los datos del formato de
presentacin.
CTS (Common Type System). Especificacin de tipos bsicos para la integracin
de distintos lenguajes de programacin en Microsoft .NET (como C#, Visual Basic
.NET, JScript, .NET).
C#. Lenguaje creado por Microsoft para su plataforma .NET. Es parecido a C++ y
Java.
D
DHTML (Dinamic HTML - HTML dinmico). Se forma de una conjuncin de HTML,
hojas de estilo en cascada (CSS) y lenguajes de Script como JavaScript o
VBScript.
DLL (Dynamic Link Library - Bibliotecas de Enlace Dinmico). Es un archivo que
contiene funciones que se pueden llamar desde aplicaciones u otras DLL. Los
desarrolladores utilizan las DLL para poder reciclar el cdigo y aislar las
diferentes tareas. Las DLL no pueden ejecutarse directamente, es necesario
llamarlas desde un cdigo externo. Las DLL de Windows permiten que las
aplicaciones puedan operar en el entorno de Windows.
F
Framework (Marco de trabajo). Es un esquema o estructura que puede incluir
soporte

de

programas,

bibliotecas

un

lenguaje

interpretado

organizacin, desarrollo y/o la implementacin de una aplicacin.

11

para

la

glosario_

Introduccin a .NET
H
HTML (HiperText Markup Language). Lenguaje para la creacin de pginas web
relacionadas entre s por hipertexto.
HTTP (HiperText Transport Protocol). Protocolo de comunicaciones utilizado por
los navegadores de Internet para el acceso a recursos web, como ficheros de
imgenes, vdeo, pginas HTML, pginas ASP, pginas ASPX, etc.
I
IIS (Internet Information Server). Es el servidor web de Microsoft. ASP.NET
funciona sobre l.
J
Java. Lenguaje de programacin orientado a objetos desarrollado por Sun
Microsystems.
JavaScript. Lenguaje de Script desarrollado por Netscape y utilizado en los
navegadores de Internet.
M
MDAC (Microsoft Data Access Components). Componentes Microsoft de acceso a
datos.
MFC (Microsoft Fundation Classes). Librera basada en jerarqua de clases.
Bsicamente encapsula el API de Windows en una forma orientada a objetos.
MSIL. Lenguaje intermedio para la ejecucin de aplicaciones en Microsoft .NET.
P
PHP (Personal Home Page - Procesador de hipertexto). Las pginas PHP
presentan una tcnica similar a las pginas ASP de Microsoft, es decir, las
pginas HTML incluyen el cdigo PHP embebido en ellas y al ejecutarlas, se
genera cdigo HTML dinmicamente.
Proceso de negocio. Es un conjunto de tareas relacionadas lgicamente, que
toman uno o ms tipos de entradas (inputs), llevadas a cabo para lograr un
resultado de negocio definido (outputs). Tambin puede verse como un conjunto
de actividades que colectivamente consiguen alcanzar un objetivo de negocio.

12

glosario_

Introduccin a .NET
Es, por ejemplo, el proceso a travs del cual una organizacin ofrece sus
servicios a sus clientes.
R
RAD (Rapid Application Development - Desarrollo rpido de aplicaciones). Es un
proceso de desarrollo de software desarrollado inicialmente en 1980. Tiende a
englobar la usabilidad, la utilidad y la rapidez de ejecucin.
RIA (Rich Internet Applications - aplicaciones de Internet enriquecidas). Son un
nuevo tipo de aplicaciones con ms ventajas que las tradicionales aplicaciones
web. Esta surge como una combinacin de las ventajas que ofrecen las
aplicaciones web y las aplicaciones tradicionales.
S
Script. Es un guion o conjunto de instrucciones. Permiten la automatizacin de
tareas creando pequeas utilidades.
SDK (Software Development Kit - kit de desarrollo de software). Es un conjunto
de herramientas de desarrollo que le permite a un programador crear software.
V
VBScript (Visual Basic Script). Lenguaje de Script desarrollado por Microsoft.
X
XML (eXtensible Markup Language - lenguaje de marcado extensible). Se utiliza
para la construccin de documentos de datos estructurados multi-propsito.

13

referencias web_

Introduccin a .NET
MSDN library: referencia completa a

http://msdn.microsoft.com/es-

las caractersticas de Visual Studio

es/library/bb386063.aspx

Web de Microsoft donde se puede


obtener ms informacin de Visual

http://www.microsoft.com/spain/visu

Studio, descargar versiones de prueba

alstudio/products

o comprar.
Ms

informacin

sobre

las

http://www.microsoft.com/learning/e

certificaciones profesionales.

n/us/certification/cert-vstudio.aspx

Informacin y recursos para crear

http://msdn.microsoft.com/es-

pginas web ASP.NET

es/asp.net

Referencia

completa

de

todas

las

http://msdn.microsoft.com/es-

directivas en ASP.NET.

es/library/xz702w3e.aspx

Blog sobre ASP.NET

http://www.asp.net/es/aprender/

Pgina

con

recursos

formativos,

http://www.elguille.info/NET/ASPNET

ejemplo, etc. de ASP.NET

/Default.aspx

The Official Microsoft ASP.NET Site

http://www.asp.net/
http://msdn.microsoft.com/es-

Informacin general sobre ASP.NET

es/library/4w3ex9c2.aspx#VisualWe
bDeveloper

Herramientas imprescindibles para un


desarrollador de .NET

http://www.genbetadev.com/herrami
entas/herramientas-imprescindiblespara-un-desarrollador-de-net

15

bibliografa_

Introduccin a .NET
Griffiths, Ian; Adams, Matthew; Liberty, Jesse. Programming C# 4.0. 6th Edition.
OReilly. 2010.
MacDonald, Matthew. Beginning ASP.NET 4 in CSharp 2010. Apress. Washington.
2010.
Mackey, Alex. Introducing .NET 4.0 with Visual Studio 2010. Apress. 2010.
Mueller, John Paul. Start Here! Learn Microsoft Visual C# 2010. OReilly Media,
Inc. 2011.
Northrup, Tony; Snell, Mike. Exam 70-515: Web Applications Development with
Microsoft .NET Framework 4. Microsoft Press. 2010.
Shepherd, George. Microsoft ASP.NET 4 Step by Step. Microsoft Press. 2010.
Stephen, Rob. Start Here! Fundamentals of Microsoft .NET Programming. OReilly
Media, Inc. 2011.

17

ndice_

Introduccin al desarrollo
de aplicaciones web

1. INTRODUCCIN ...............................................................................3
2. ASP.NET ...........................................................................................3
3. JAVA (JSP, SERVLETS) .....................................................................4
4. PHP ..................................................................................................4
5. DHTML .............................................................................................5
GLOSARIO .............................................................................................7
REFERENCIAS WEB ..............................................................................11

formacin digital

BIBLIOGRAFA ....................................................................................13

Introduccin al desarrollo
de aplicaciones web
1. INTRODUCCIN
Al principio, el desarrollo de pginas web se limitaba al uso del lenguaje de marcado HTML
(lenguaje de marcado de hipertexto), un lenguaje sencillo, sin capas ni estilos, con el que se
obtenan pginas estticas cuya labor nicamente era suministrar informacin personal del
autor o de la empresa (de forma textual o a travs de imgenes), sin proporcionar ninguna
interaccin con el usuario.
Internet est basado en una serie de estndares, protocolos y lenguajes que sirven para que
los diferentes servidores y clientes se comuniquen entre s. Los protocolos bsicos de
Internet son principalmente el protocolo TCP/IP y HTTP.
En los prximos apartados, presentaremos una serie de tecnologas de desarrollo web
utilizadas en la actualidad.

2. ASP.NET
ASP.NET sucedi a ASP (Active Server Page), que es la tecnologa que desarroll Microsoft
para la creacin de pginas dinmicas del lado del servidor. Las pginas ASP tienen
insertados lenguajes Scripts, como VBScript o JavaScript, junto al cdigo HTML.
ASP.NET se construy sobre el Common Language Runtime (CLR), esto hace que podamos
escribir cdigo ASP.NET usando cualquier lenguaje admitido por el .NET Framework (C#,
Visual Basic .NET, Delphi, C++, F#, J#, Perl, Python...). Estos lenguajes nos permiten
desarrollar aplicaciones ASP.NET que se benefician de la seguridad de tipos, herencia, etc.
Nosotros emplearemos C# durante este curso.
Con Visual Studio, podemos crear diferentes tipos de proyectos ASP.NET, que incluyen sitios
web, aplicaciones web, servicios web y controles de servidor AJAX.
Hay una diferencia entre los proyectos de sitios web y los proyectos de aplicaciones web, ya
que, algunas caractersticas solo funcionan con proyectos de aplicaciones web, como MVC y
ciertas

herramientas

para

automatizar

la implementacin

web.

No

obstante,

otras

caractersticas, como los datos dinmicos, funcionan tanto con los proyectos de sitios web
como con los proyectos de aplicaciones web.

Introduccin al desarrollo
de aplicaciones web
Por ltimo, ASP.NET solo funciona sobre el servidor de Microsoft IIS. Esto no ocurre con
otros lenguajes del lado de servidor, como PHP, Perl o Python, ejecutables sobre ms de un
servidor como Apache, Hiawatha o Nginx.

3. JAVA (JSP, SERVLETS)


Java es un lenguaje de programacin y la primera plataforma informtica creada por Sun
Microsystems en 1995. Es la tecnologa subyacente que permite el uso de programas como
herramientas, juegos y aplicaciones de negocios. Java se ejecuta en ms de 850 millones de
ordenadores personales de todo el mundo y en miles de millones de dispositivos, como
dispositivos mviles y aparatos de televisin.
La tecnologa Java tambin es usada para la creacin de pginas web con programacin en el
lado del servidor: JSP y Servelts.
Con JSP podemos crear aplicaciones web que se ejecuten en variados servidores web de
mltiples plataformas, ya que Java es en esencia un lenguaje multiplataforma. Las pginas
JSP estn compuestas de cdigo HTML/XML mezclado con etiquetas especiales para
programar Scripts de servidor en sintaxis Java. Por tanto, las JSP podremos escribirlas con
nuestro editor HTML/XML habitual.
Por otra parte, se podra definir un servlet como un programa escrito en Java que se ejecuta
en el marco de un servicio de red (un servidor web, por ejemplo), y que recibe y responde a
las peticiones de uno o ms clientes.
Los servlets y pginas JSP, al estar directamente basado en Java, presenta todas las
ventajas de este lenguaje, como la orientacin a objetos o la disponibilidad de todas las
libreras

adicionales

de

Java

(generacin

de

imgenes,

comunicaciones,

seguridad,

encriptacin, etc.).

4. PHP
PHP corresponde a las iniciales de Hypertext Pre-processor. Este lenguaje de programacin
tiene una sintaxis similar a los lenguajes C y Perl, y se interpreta por un servidor web como,
por ejemplo, Apache.
PHP presenta una tcnica similar a las pginas ASP.NET, es decir, las pginas HTML incluyen
cdigo PHP embebido en ellas y, al ejecutarlas, se genera cdigo HTML dinmicamente.

Introduccin al desarrollo
de aplicaciones web
Aunque PHP no es un lenguaje orientado a objetos, est preparado para aprovechar una
serie de aspectos de las clases que son recomendables en el desarrollo de aplicaciones.
PHP dispone de un gran nmero de libreras de funciones para realizar operaciones
avanzadas como acceso a bases de datos, correo electrnico, transferencia de ficheros,
comunicaciones, etc.
Por ltimo, las pginas PHP tambin se han extendido mucho en los ltimos aos (son las
pginas web que encontramos con extensin .php o .phtml).

5. DHTML
Sus siglas significan Dynamic HTML (HTML dinmico). Se forma a partir de la conjuncin de
HTML, hojas de estilo en cascada (CSS), lenguajes de script como JavaScript o VBScript, y la
jerarqua de objetos DOM (Document Object Model), que es el conjunto de objetos
predefinidos que definen a todos los objetos de una pgina y del navegador con el que se
est accediendo a dicha pgina, de tal forma que se puede acceder a sus propiedades y
funciones.
Los lenguajes de Script se ejecutan en la mquina cliente (en el navegador del usuario que
solicita una pgina). Es por ello por lo que son diferentes a otras tecnologas, en las cuales el
cdigo ha de ejecutarse en el servidor quien construye y enva al cliente la pgina web.

recuerde_

Introduccin al desarrollo
de aplicaciones web

En los ltimos aos Internet ha evolucionado considerablemente y las


aplicaciones web son cada vez ms complejas en trminos de contenido,
estructura, comportamiento e interfaz. Adems, la exigencia de una
creciente competitividad del mercado requiere de una puesta en marcha muy
rpida de estas aplicaciones. A pesar de ello, todava en muchas ocasiones
las aplicaciones web se elaboran de una forma artesanal, reduciendo las
posibilidades de xito en su desarrollo y posterior mantenimiento.

Actualmente se utilizan tecnologas como:

DHTML (Dynamic HTML - HTML dinmico). Se forma a partir de la


conjuncin de HTML, hojas de estilo en cascada (CSS), lenguajes de
Script como JavaScript o VBScript, y la jerarqua de objetos DOM.

JSP y Servlets. La tecnologa Java tambin es usada para la creacin de


pginas web con programacin en el lado del servidor.

PHP. Presenta una tcnica donde las pginas HTML incluyen cdigo PHP
embebido

en

ellas

y,

al

ejecutarlas,

se

genera

cdigo

HTML

dinmicamente.

ASP.NET (tecnologas que se ejecutan en el servidor). Presenta una


tcnica muy parecida a PHP, inserta cdigo dentro del HTML para
generar ms cdigo HTML. Podemos usar cualquier lenguaje admitido
por el .NET Framework (C#, Visual Basic .NET, Delphi, C++, F#, J#,
Perl,

Python...)

para

desarrollar

emplearemos C# durante este curso.

aplicaciones

ASP.NET.

Nosotros

glosario_

Introduccin al desarrollo
de aplicaciones web
A
API

(Application

Programming

Interface

Interfaz

de

programacin

de

aplicaciones). Es el conjunto de funciones y procedimientos que ofrece una


biblioteca especfica para la comunicacin entre componentes software.
ASP (Active Server Pages). Pginas activas del servidor Internet Information
Server. ASP es la versin anterior a la tecnologa ASP.NET de Microsoft.
C
CLR (Common Language Runtime). Motor de ejecucin comn incluido en el
paquete Microsoft .NET.
CSS (Cascading Style Sheets - Hojas de Estilo en Cascada). Se utilizan para dar
formato a documentos HTML o XML, separando los datos del formato de
presentacin.
CTS (Common Type System). Especificacin de tipos bsicos para la integracin
de distintos lenguajes de programacin en Microsoft .NET (como C#, Visual Basic
.NET, JScript, .NET).
C#. Lenguaje creado por Microsoft para su plataforma .NET. Es parecido a C++ y
Java.
D
DHTML (Dinamic HTML - HTML dinmico). Se forma de una conjuncin de HTML,
hojas de estilo en cascada (CSS) y lenguajes de Script como JavaScript o
VBScript.
DLL (Dynamic Link Library - Bibliotecas de Enlace Dinmico). Es un archivo que
contiene funciones que se pueden llamar desde aplicaciones u otras DLL. Los
desarrolladores utilizan las DLL para poder reciclar el cdigo y aislar las
diferentes tareas. Las DLL no pueden ejecutarse directamente, es necesario
llamarlas desde un cdigo externo. Las DLL de Windows permiten que las
aplicaciones puedan operar en el entorno de Windows.
F
Framework (Marco de trabajo). Es un esquema o estructura que puede incluir
soporte

de

programas,

bibliotecas

un

lenguaje

interpretado

organizacin, desarrollo y/o la implementacin de una aplicacin.

para

la

glosario_

Introduccin al desarrollo
de aplicaciones web
H
HTML (HiperText Markup Language). Lenguaje para la creacin de pginas web
relacionadas entre s por hipertexto.
HTTP (HiperText Transport Protocol). Protocolo de comunicaciones utilizado por
los navegadores de Internet para el acceso a recursos web, como ficheros de
imgenes, vdeo, pginas HTML, pginas ASP, pginas ASPX, etc.
I
IIS (Internet Information Server). Es el servidor web de Microsoft. ASP.NET
funciona sobre l.
J
Java. Lenguaje de programacin orientado a objetos desarrollado por Sun
Microsystems.
JavaScript. Lenguaje de Script desarrollado por Netscape y utilizado en los
navegadores de Internet.
M
MDAC (Microsoft Data Access Components). Componentes Microsoft de acceso a
datos.
MFC (Microsoft Fundation Classes). Librera basada en jerarqua de clases.
Bsicamente encapsula el API de Windows en una forma orientada a objetos.
MSIL. Lenguaje intermedio para la ejecucin de aplicaciones en Microsoft .NET.
P
PHP (Personal Home Page - Procesador de hipertexto). Las pginas PHP
presentan una tcnica similar a las pginas ASP de Microsoft, es decir, las
pginas HTML incluyen el cdigo PHP embebido en ellas y al ejecutarlas, se
genera cdigo HTML dinmicamente.
Proceso de negocio. Es un conjunto de tareas relacionadas lgicamente, que
toman uno o ms tipos de entradas (inputs), llevadas a cabo para lograr un
resultado de negocio definido (outputs). Tambin puede verse como un conjunto
de actividades que colectivamente consiguen alcanzar un objetivo de negocio.

glosario_

Introduccin al desarrollo
de aplicaciones web
Es, por ejemplo, el proceso a travs del cual una organizacin ofrece sus
servicios a sus clientes.
R
RAD (Rapid Application Development - Desarrollo rpido de aplicaciones). Es un
proceso de desarrollo de software desarrollado inicialmente en 1980. Tiende a
englobar la usabilidad, la utilidad y la rapidez de ejecucin.
RIA (Rich Internet Applications - aplicaciones de Internet enriquecidas). Son un
nuevo tipo de aplicaciones con ms ventajas que las tradicionales aplicaciones
web. Esta surge como una combinacin de las ventajas que ofrecen las
aplicaciones web y las aplicaciones tradicionales.
S
Script. Es un guion o conjunto de instrucciones. Permiten la automatizacin de
tareas creando pequeas utilidades.
SDK (Software Development Kit - kit de desarrollo de software). Es un conjunto
de herramientas de desarrollo que le permite a un programador crear software.
V
VBScript (Visual Basic Script). Lenguaje de Script desarrollado por Microsoft.
X
XML (eXtensible Markup Language - lenguaje de marcado extensible). Se utiliza
para la construccin de documentos de datos estructurados multi-propsito.

referencias web_

Introduccin al desarrollo
de aplicaciones web
Detallada referencia a ASP.NET 4 en

http://msdn.microsoft.com/es-

las pginas web de MSDN

es/library/4w3ex9c2.aspx

Informacin y recursos para crear

http://msdn.microsoft.com/es-

pginas web ASP.NET

es/asp.net

Referencia

completa

de

todas

las

http://msdn.microsoft.com/es-

directivas en ASP.NET.

es/library/xz702w3e.aspx

Blog sobre ASP.NET

http://www.asp.net/es/aprender/

Pgina

con

recursos

formativos,

http://www.elguille.info/NET/ASPNET

ejemplo, etc. de ASP.NET

/Default.aspx

The Official Microsoft ASP.NET Site

http://www.asp.net/
http://msdn.microsoft.com/es-

Informacin general sobre ASP.NET

es/library/4w3ex9c2.aspx#VisualWe
bDeveloper

Herramientas imprescindibles para un


desarrollador de .NET

http://www.genbetadev.com/herrami
entas/herramientas-imprescindiblespara-un-desarrollador-de-net

11

bibliografa_

Introduccin al desarrollo
de aplicaciones web
Griffiths, Ian; Adams, Matthew; Liberty, Jesse. Programming C# 4.0. 6th Edition.
OReilly. 2010.
MacDonald, Matthew. Beginning ASP.NET 4 in CSharp 2010. Apress. Washington.
2010.
Mackey, Alex. Introducing .NET 4.0 with Visual Studio 2010. Apress. 2010.
Mueller, John Paul. Start Here! Learn Microsoft Visual C# 2010. OReilly Media,
Inc. 2011.
Northrup, Tony; Snell, Mike. Exam 70-515: Web Applications Development with
Microsoft .NET Framework 4. Microsoft Press. 2010.
Shepherd, George. Microsoft ASP.NET 4 Step by Step. Microsoft Press. 2010.
Stephen, Rob. Start Here! Fundamentals of Microsoft .NET Programming. OReilly
Media, Inc. 2011.

13

ndice_

Conceptos de la programacin
orientada a objetos

1. INTRODUCCIN A LA PROGRAMACIN ORIENTADA A OBJETOS


(POO) ..............................................................................................3
2. OBJETOS Y CLASES...........................................................................3
3. CARACTERSTICAS DE LA PROGRAMACIN ORIENTADA A
OBJETOS (POO) ................................................................................4
3.1. ENCAPSULACIN .....................................................................4
3.2. ABSTRACCIN .........................................................................5
3.3. HERENCIA ................................................................................6
3.4. POLIMORFISMO .......................................................................7
4. MENSAJES Y MTODOS. SOBRECARGA ..............................................7
4.1. MENSAJES ................................................................................7
4.2. MTODOS.................................................................................8
4.3. SOBRECARGA ...........................................................................8
5. MODELO DE OBJETOS Y RELACIONES ENTRE CLASES ........................9
6. VENTAJAS Y DESVENTAJAS DE LA POO ...........................................10
GLOSARIO ...........................................................................................13
REFERENCIAS WEB ..............................................................................17

formacin digital

BIBLIOGRAFA ....................................................................................19

Conceptos de la programacin
orientada a objetos

1.

INTRODUCCIN A LA PROGRAMACIN ORIENTADA A OBJETOS (POO)

La orientacin a objetos es un paradigma utilizado en el desarrollo software que cambia la


forma de programar, ya que no tiene parecido a la programacin estructurada.
Dicho paradigma augura mejoras en la forma de diseo, desarrollo y mantenimiento del
software ofreciendo una solucin a largo plazo a los problemas que han existido desde los
inicios del desarrollo de software: falta de portabilidad del cdigo, reusabilidad, cdigo que
es difcil de modificar, ciclos de desarrollo largos y tcnicas de codificacin no intuitivas.
En este tema vamos a tratar aspectos genricos de la Programacin Orientada a Objetos
(POO), necesarios para poder utilizar correctamente el lenguaje en el que vamos a
programar nuestras pginas ASP.NET, el lenguaje C#.

2.

OBJETOS Y CLASES

El objeto es el concepto principal sobre el cual se fundamenta la tecnologa orientada a


objetos. Un objeto puede ser visto como:

Una entidad que posee un conjunto de propiedades o atributos y que es capaz de


realizar una serie de acciones.

Una representacin o modelizacin de un objeto del mundo real.

Ejemplo
Podemos tener un objeto bicicleta que represente a una bicicleta dentro de nuestra realidad, o
bien un objeto factura, automvil o persona.

Los objetos son instancias particulares de las entidades abstractas llamadas clases, en
donde se definen las caractersticas comunes a dichos objetos. Se puede decir que una clase
es como una plantilla, molde o prototipo en el que se definen los atributos (variables) y las
acciones (mtodos) comunes para todos los objetos que se crean a partir de ella. Mediante
las clases podremos crear (instanciar) objetos de un mismo tipo, que se diferenciarn unos
de otros mediante su estado, es decir, el valor de sus atributos.

Conceptos de la programacin
orientada a objetos

Ejemplo
Del objeto automvil podemos mencionar como atributos: el modelo, la marca, el color, el nmero de
matrcula, nmero de bastidor, entre otros. Algunas acciones que es capaz de realizar un automvil
son: frenar, acelerar y cambiar la velocidad. Este objeto automvil es una instancia particular de la
clase automvil.

Los parmetros o variables que definen el estado de un objeto se denominan atributos o


variables miembro, y las acciones que pueden realizar los objetos se denominan
mtodos o funciones miembro.
Si lo comparamos con la programacin estructurada, podramos hacer la siguiente
aproximacin: los atributos, propiedades o variables miembro de la POO seran las variables;
los mtodos o funciones miembro seran los procedimientos y funciones. La diferencia est
en que las propiedades y los mtodos se heredan de unas clases a otras. De esta manera,
las propiedades de un objeto pueden ser diferentes:

Propiedades propias. Estn declaradas en la clase a la que pertenece el objeto.

Propiedades heredadas. Estn definidas en una clase distinta a la del objeto,


antepasado de este ( padre , abuelo, etc.).

3. CARACTERSTICAS DE LA PROGRAMACIN ORIENTADA A OBJETOS (POO)


En este apartado estudiamos las caractersticas asociadas a la programacin orientada a
objetos, las cuales son:

Encapsulacin: ocultar la implementacin interna.

Abstraccin: ignorar la implementacin interna.

Herencia: mecanismo de reutilizacin entre clases.

Polimorfismo: igual mensaje a objetos diferentes produce respuestas diferentes.

3.1. ENCAPSULACIN
La encapsulacin es la tcnica de ocultar la implementacin interna de un objeto, es decir,
cmo est construido y de qu se compone. Con la encapsulacin se consigue, por tanto,
que los atributos de un objeto estn ocultos al resto de los objetos, de tal forma que no se
pueda acceder directamente para modificar su estado o consultarlo.

Conceptos de la programacin
orientada a objetos

Para acceder a los atributos de un objeto debemos utilizar los mtodos denominados get y
set.
La tcnica habitual es que un objeto ofrezca una parte pblica utilizada por otros objetos
para interactuar entre s, pero tambin contenga una parte oculta para encapsular los
detalles de implementacin del objeto.
Como los atributos y la implementacin de cada objeto queda oculta a los dems objetos que
interaccionan en el programa, se favorece la proteccin de los datos y la localizacin de
errores en los programas (ya que cada objeto est altamente especializado y solo se encarga
de su tarea). Esto consigue adems una mayor modularidad y facilita el diseo en equipo de
programas y la reutilizacin de clases (componentes), ya que podemos escribir cdigo de
manera independiente de cmo se encuentren construidos los diferentes objetos que vamos
a utilizar. As, ocultando los detalles de implementacin, podremos realizar cambios en el
cdigo interno de los objetos sin que ello afecte a otros objetos que los utilicen o dependan
de ellos.
3.2. ABSTRACCIN
La abstraccin es la capacidad de ignorar los aspectos de implementacin de los objetos en
los pasos iniciales, con lo que solo necesitamos conocer qu es lo que hace un objeto y no
cmo lo hace. Esta propiedad es utilizada para definir un objeto y establecer las relaciones
de este con otros objetos.
De forma grfica, podemos representar un objeto como dos circunferencias: una interna que
contiene todos los detalles de implementacin (variables y mtodos privados) y que
permanece oculta al resto de objetos, y otra circunferencia concntrica externa que
representa lo que el objeto muestra al mundo exterior, la interfaz pblica que permite
interactuar con l.

Mtodos
Atributos y mtodos privados

pblicos

(interfaz del objeto)

(encapsulados)

Fuente: elaboracin propia

Como conclusin, podemos decir que no es necesario entender la implementacin interna de


un objeto para poder utilizarlo.

Conceptos de la programacin
orientada a objetos

3.3.

HERENCIA

La herencia es el mecanismo mediante el cual podemos reutilizar clases ya definidas. As,


una vez definida una clase, podemos usarla como base para generar clases ms complicadas
o especializadas, es decir, los mtodos y atributos de una clase pueden transmitirse a las
clases que descienden de ella.
Como la clase hija puede aadir atributos, mtodos y redefinir o sobrescribir los mtodos de
la clase padre, podemos ver la herencia como una sucesiva especializacin de las clases. La
clase de la que se hereda se denomina clase padre o superclase, y la clase que hereda se
denomina clase hija o subclase. Una sencilla regla para verificar que la herencia entre dos
clases es correcta es hacernos la pregunta: es un tipo de...?.
Ejemplo
Siguiendo el ejemplo de los vehculos, los todoterrenos son una clase hija de la superclase vehculo a
motor e incorporan especializaciones, como puede ser la traccin a las cuatro ruedas.

Por otra parte, las subclases tambin pueden sobrescribir los mtodos de la superclase para
proporcionar un comportamiento especial.

Ejemplo
La clase automvil puede contener un mtodo ObtenerNmeroDeMarchas() que siempre devuelva 5,
mientras que la clase frmula 1, que puede tener hasta 7 marchas, sobrescribira este mtodo para
devolver 7 en lugar de 5.

Respecto a la herencia, no hay lmite de nivel, lo cual da lugar a una jerarqua de clases.
Adems, La herencia puede ser simple, si la clase hija hereda de una nica clase padre, o
mltiple, si lo hace de varias clases.

Nota
El lenguaje que usaremos en la programacin de las pginas ASP.NET de este curso es C#, que solo
soporta herencia simple.

Por ltimo, tambin podemos definir clases abstractas, que son clases que definen
comportamientos genricos y en las que algunos o todos sus mtodos no han sido
implementados (mtodos abstractos), tan solo declarados. El comportamiento de estos
mtodos es totalmente libre para las subclases que hereden de esta, las cuales debern
implementarlos para poder ser instanciadas en objetos.

Conceptos de la programacin
orientada a objetos

3.4.

POLIMORFISMO

El polimorfismo es otra ms de las caractersticas propias de la POO. Expresa la posibilidad


de que el mismo mensaje, enviado a objetos diferentes, ejecute mtodos distintos. Por lo
tanto, es posible definir operaciones o mtodos con el mismo nombre dentro de clases
distintas, donde cada operacin tendr una implementacin propia para cada clase. Esto nos
permite crear una interfaz comn para una serie de clases que tengan algo en comn.
Ejemplo
Supongamos que tenemos en nuestra aplicacin, una clase Enteros para modelar un nmero entero, y
una clase Matrices, para modelar una matriz matemtica. Ambas clases deben tener un mtodo para
sumar dos objetos, ya sean enteros o matrices. Podemos definir un mtodo suma() para la clase
Enteros y otro mtodo suma() para la clase Matrices, de esta forma ambas clases comparten el mismo
nombre para la operacin pero su implementacin es distinta en cada clase.

4.

MENSAJES Y MTODOS. SOBRECARGA

Ya conocemos los fundamentos de la programacin orientada a objetos, los conceptos de


clases, objetos y sus caractersticas fundamentales. A continuacin, estudiaremos en este
apartado la forma de relacionarse los objetos mediante mensajes y mtodos, as como la
tcnica de sobrecarga de mtodos.
4.1.

MENSAJES

Los mensajes son el mecanismo mediante el cual dos objetos pueden interactuar, es decir,
comunicarse entre s. Un objeto tiene sentido si aparece como un componente de un
programa mayor o de una aplicacin que contiene muchos otros objetos, los cuales
interactan entre s y es, a travs de esta interaccin, como se consigue una funcionalidad
mayor.
Los objetos interactan y se comunican mediante el envo de mensajes. As, cuando un
objeto A quiere que otro objeto B realice una accin, el objeto A enva un mensaje al
objeto B. El mtodo de B que recibe el mensaje de A es denominado mtodo de la
interfaz de B.
En resumen, un mensaje enviado a un objeto representa la invocacin de un determinado
mtodo sobre dicho objeto, es decir, la ejecucin de una operacin sobre el objeto, que
puede ser conocer o, incluso, modificar el estado del objeto destino.

Conceptos de la programacin
orientada a objetos

Por tanto, para enviar un mensaje necesitamos:

El objeto al que vamos a enviar el mensaje.

El nombre del mtodo (accin o comportamiento que queremos que realice).

Los parmetros necesarios para el mtodo en cuestin.

4.2.

MTODOS

Las acciones de los mensajes a los que un objeto puede responder representan su
comportamiento, es decir, son los mtodos que dicho objeto puede realizar. Por tanto, para
que dos objetos puedan interactuar,, es necesario un mensaje que debe especificar:

El objeto al que vamos a enviar el mensaje.

El nombre del mtodo (accin o comportamiento que queremos que realice).

Los parmetros necesarios para el mtodo en cuestin.

Los objetos disponen de dos tipos de mtodos, mtodos de uso interno (ocultos o privados)
y mtodos pblicos, que constituyen la interfaz del objeto con el resto de objetos con
quienes puede interaccionar. Por otra parte, los mtodos consultan o modifican el estado de
un objeto. Son funciones dentro de un objeto y, como hemos visto, pueden retornar un valor
(informacin sobre el estado del objeto), o realizar una accin sobre el estado del mismo.
4.3.

SOBRECARGA

Se trata de otra de las tcnicas usadas en la POO que hace referencia a la posibilidad de
tener en una misma clase mtodos con el mismo nombre, pero que difieren en el tipo y/o
nmero de los parmetros que reciben.

Ejemplo
Podemos tener en la clase Matriz dos mtodos:

Mtodo sumar(e, m), que recibira un entero para sumar a la matriz.

Mtodo sumar(m, m), que podra recibir otro objeto matriz.

El primer mtodo implementa la suma matemtica entre un entero y una matriz, y el segundo, la
suma de matrices.
Este ejemplo es una sobrecarga del mtodo sumar, pues aunque tiene igual nmero de parmetros,
difieren en el tipo y, por tanto, su implementacin ser diferente.

Conceptos de la programacin
orientada a objetos

5.

MODELO DE OBJETOS Y RELACIONES ENTRE CLASES

Una vez definido e identificado el problema que deseamos solucionar en nuestra aplicacin,
debemos realizar una representacin lgica de los objetos que forman parte del problema en
el mundo real para utilizarlos en nuestro programa y deben definirse las relaciones
existentes entre dichos objetos. De esta forma, se disea un modelo para que nuestra
aplicacin funcione adecuadamente, donde debemos aplicar los principios de la POO que
hemos aprendido en los apartados anteriores: abstraccin, encapsulacin, herencia y
polimorfismo.
Cada clase en una aplicacin estar especializada en una funcin o tarea especfica. No
obstante, para ofrecer una mayor funcionalidad y realizar tareas ms complejas, es
necesario que exista una relacin entre distintas clases, es decir, una forma de interaccin o
comunicacin entre ellas. As, una clase puede relacionarse con otra a travs de:

Una relacin de composicin: una clase est compuesta de otras clases. Esto ocurre
cuando los atributos de una clase se implementan como objetos de otra clase.

Ejemplo
La clase automvil tiene atributos que pueden ser a la vez clases: puerta, motor, rueda, chasis,
etc.

Una relacin de uso: una clase se relaciona con otra a travs de los mensajes que le
enva, pasndole como parmetro del mtodo invocado por el mensaje, una instancia de
una clase.

Ejemplo
Al invocar al mtodo suma de una matriz, le pasamos un objeto entero para que lo sume a un
objeto matriz.

Una relacin de herencia: como ya adelantamos, consiste en que una clase hereda de
una clase padre o superclase, obteniendo as toda la funcionalidad ofrecida por la clase
padre y pudiendo aadir nuevas funcionalidades. Con esta forma de relacin,
conseguimos una mayor reutilizacin del cdigo y una mayor especializacin a travs de
la jerarqua de clases. Las clases iniciales en esta jerarqua son ms generales y, a
medida que profundizamos en la jerarqua de la descendencia, las clases hijas estn
ms especializadas e implementan tareas ms concretas.

Conceptos de la programacin
orientada a objetos

6. VENTAJAS Y DESVENTAJAS DE LA POO


Entre las ventajas que encontramos al utilizar POO tenemos que:

Facilita

la

reutilizacin

del

software

travs

de

la

herencia.

Adems,

la

encapsulacin nos facilita el uso de objetos que no hemos implementado todava, pero
de los que conocemos qu hacen, no es necesario saber cmo lo hacen.

Facilita el mantenimiento de los programas y la deteccin de errores. La


encapsulacin nos garantiza que las modificaciones realizadas en el ncleo de un objeto
tendrn un efecto limitado y localizado, as su interfaz de comunicacin con el resto de
objetos se mantendr, por lo que podremos seguir comunicndonos con l de igual
forma.

Las tareas de anlisis, diseo e implementacin son ms intuitivas, ya que los


objetos en nuestros diseos van a representar objetos presentes en el mundo real.

Por otra parte, entre las desventajas que encontramos al utilizar POO tenemos que:

La curva de aprendizaje suele ser ms larga que la necesaria en la programacin


estructurada, debido principalmente a que implica un cambio de mentalidad adems de
aprender un nuevo lenguaje orientado a objetos.

Dificultad a la hora de determinar las caractersticas de un objeto ya que debemos


tener en cuenta las relaciones con otros objetos. A veces, el establecimiento de nuevas
relaciones puede implicar un cambio en la definicin del objeto.

Jerarquas de herencia complejas, que pueden llegar a ser confusas en el caso de la


herencia mltiple (una clase puede heredar de ms de una clase).

10

recuerde_

Conceptos de la programacin
orientada a objetos

Los lenguajes de programacin orientados a objetos permiten el


encapsulamiento, la abstraccin, la herencia y el polimorfismo.

El encapsulamiento separa la interfaz de la implementacin ocultando los


datos dentro del objeto y permitiendo el acceso a los datos de dicho objeto a
travs de funciones miembro (mtodos).

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

El polimorfismo permite crear cdigo genrico y reutilizable que podr


funcionar con una amplia gama de clases diferentes.

11

glosario_

Conceptos de la programacin
orientada a objetos

A
API

(Application

Programming

Interface

Interfaz

de

programacin

de

aplicaciones). Es el conjunto de funciones y procedimientos que ofrece una


biblioteca especfica para la comunicacin entre componentes software.
ASP (Active Server Pages). Pginas activas del servidor Internet Information
Server. ASP es la versin anterior a la tecnologa ASP.NET de Microsoft.
C
CLR (Common Language Runtime). Motor de ejecucin comn incluido en el
paquete Microsoft .NET.
CSS (Cascading Style Sheets - Hojas de Estilo en Cascada). Se utilizan para dar
formato a documentos HTML o XML, separando los datos del formato de
presentacin.
CTS (Common Type System). Especificacin de tipos bsicos para la integracin
de distintos lenguajes de programacin en Microsoft .NET (como C#, Visual Basic
.NET, JScript, .NET).
C#. Lenguaje creado por Microsoft para su plataforma .NET. Es parecido a C++ y
Java.
D
DHTML (Dinamic HTML - HTML dinmico). Se forma de una conjuncin de HTML,
hojas de estilo en cascada (CSS) y lenguajes de Script como JavaScript o
VBScript.
DLL (Dynamic Link Library - Bibliotecas de Enlace Dinmico). Es un archivo que
contiene funciones que se pueden llamar desde aplicaciones u otras DLL. Los
desarrolladores utilizan las DLL para poder reciclar el cdigo y aislar las
diferentes tareas. Las DLL no pueden ejecutarse directamente, es necesario
llamarlas desde un cdigo externo. Las DLL de Windows permiten que las
aplicaciones puedan operar en el entorno de Windows.
F
Framework (Marco de trabajo). Es un esquema o estructura que puede incluir
soporte

de

programas,

bibliotecas

un

lenguaje

interpretado

organizacin, desarrollo y/o la implementacin de una aplicacin.

13

para

la

glosario_

Conceptos de la programacin
orientada a objetos

H
HTML (HiperText Markup Language). Lenguaje para la creacin de pginas web
relacionadas entre s por hipertexto.
HTTP (HiperText Transport Protocol). Protocolo de comunicaciones utilizado por
los navegadores de Internet para el acceso a recursos web, como ficheros de
imgenes, vdeo, pginas HTML, pginas ASP, pginas ASPX, etc.
I
IIS (Internet Information Server). Es el servidor web de Microsoft. ASP.NET
funciona sobre l.
J
Java. Lenguaje de programacin orientado a objetos desarrollado por Sun
Microsystems.
JavaScript. Lenguaje de Script desarrollado por Netscape y utilizado en los
navegadores de Internet.
M
MDAC (Microsoft Data Access Components). Componentes Microsoft de acceso a
datos.
MFC (Microsoft Fundation Classes). Librera basada en jerarqua de clases.
Bsicamente encapsula el API de Windows en una forma orientada a objetos.
MSIL. Lenguaje intermedio para la ejecucin de aplicaciones en Microsoft .NET.
P
PHP (Personal Home Page - Procesador de hipertexto). Las pginas PHP
presentan una tcnica similar a las pginas ASP de Microsoft, es decir, las
pginas HTML incluyen el cdigo PHP embebido en ellas y al ejecutarlas, se
genera cdigo HTML dinmicamente.
Proceso de negocio. Es un conjunto de tareas relacionadas lgicamente, que
toman uno o ms tipos de entradas (inputs), llevadas a cabo para lograr un
resultado de negocio definido (outputs). Tambin puede verse como un conjunto
de actividades que colectivamente consiguen alcanzar un objetivo de negocio.

14

glosario_

Conceptos de la programacin
orientada a objetos

Es, por ejemplo, el proceso a travs del cual una organizacin ofrece sus
servicios a sus clientes.
R
RAD (Rapid Application Development - Desarrollo rpido de aplicaciones). Es un
proceso de desarrollo de software desarrollado inicialmente en 1980. Tiende a
englobar la usabilidad, la utilidad y la rapidez de ejecucin.
RIA (Rich Internet Applications - aplicaciones de Internet enriquecidas). Son un
nuevo tipo de aplicaciones con ms ventajas que las tradicionales aplicaciones
web. Esta surge como una combinacin de las ventajas que ofrecen las
aplicaciones web y las aplicaciones tradicionales.
S
Script. Es un guion o conjunto de instrucciones. Permiten la automatizacin de
tareas creando pequeas utilidades.
SDK (Software Development Kit - kit de desarrollo de software). Es un conjunto
de herramientas de desarrollo que le permite a un programador crear software.
V
VBScript (Visual Basic Script). Lenguaje de Script desarrollado por Microsoft.
X
XML (eXtensible Markup Language - lenguaje de marcado extensible). Se utiliza
para la construccin de documentos de datos estructurados multi-propsito.

15

referencias web_

Conceptos de la programacin
orientada a objetos

Informacin y recursos para crear

http://msdn.microsoft.com/es-

pginas web ASP.NET

es/asp.net

Referencia

completa

de

todas

las

http://msdn.microsoft.com/es-

directivas en ASP.NET.

es/library/xz702w3e.aspx

Blog sobre ASP.NET

http://www.asp.net/es/aprender/

Pgina

con

recursos

formativos,

http://www.elguille.info/NET/ASPNET

ejemplo, etc. de ASP.NET

/Default.aspx

The Official Microsoft ASP.NET Site

http://www.asp.net/
http://msdn.microsoft.com/es-

Informacin general sobre ASP.NET

es/library/4w3ex9c2.aspx#VisualWe
bDeveloper

Herramientas imprescindibles para un


desarrollador de .NET

http://www.genbetadev.com/herrami
entas/herramientas-imprescindiblespara-un-desarrollador-de-net

17

bibliografa_

Conceptos de la programacin
orientada a objetos

Griffiths, Ian; Adams, Matthew; Liberty, Jesse. Programming C# 4.0. 6th Edition.
OReilly. 2010.
MacDonald, Matthew. Beginning ASP.NET 4 in CSharp 2010. Apress. Washington.
2010.
Mackey, Alex. Introducing .NET 4.0 with Visual Studio 2010. Apress. 2010.
Mueller, John Paul. Start Here! Learn Microsoft Visual C# 2010. OReilly Media,
Inc. 2011.
Northrup, Tony; Snell, Mike. Exam 70-515: Web Applications Development with
Microsoft .NET Framework 4. Microsoft Press. 2010.
Shepherd, George. Microsoft ASP.NET 4 Step by Step. Microsoft Press. 2010.
Stephen, Rob. Start Here! Fundamentals of Microsoft .NET Programming. OReilly
Media, Inc. 2011.

19

ndice_

Fundamentos de
programacin en C#

1. MI PRIMERA PGINA EN ASP.NET ....................................................3


2. SINTAXIS DE C#. DECLARACIN DE VARIABLES Y
COMENTARIOS ...............................................................................14
2.1. TIPOS PREDEFINIDOS ...........................................................15
2.2. TIPOS DEFINIDOS POR EL USUARIO ......................................19
2.3. DECLARACIN DE VARIABLES ................................................21
2.4. COMENTARIOS .......................................................................21
3. SENTENCIAS CONDICIONALES, BUCLES Y OPERADORES ................. 21
3.1. SENTENCIAS CONDICIONALES ...............................................22
3.2. BUCLES ..................................................................................23
3.3. OPERADORES .........................................................................25
4. DEFINICIN E INSTANCIACIN DE CLASES ....................................32
4.1. DEFINICIN DE UNA CLASE ...................................................32
4.2. INSTANCIACIN DE UNA CLASE .............................................33
5. MANEJADORES DE EVENTOS ...........................................................37
6. TRATAMIENTO DE ERRORES ...........................................................37
7. MODIFICADORES ...........................................................................39
7.1. MODIFICADORES DE ACCESO .................................................39
7.2. OTROS MODIFICADORES ........................................................40
GLOSARIO ...........................................................................................43

formacin digital

REFERENCIAS WEB ..............................................................................47


BIBLIOGRAFA ....................................................................................49

Fundamentos de
programacin en C#

1.

MI PRIMERA PGINA EN ASP.NET

El objetivo de este captulo es aprender los fundamentos del lenguaje que vamos a utilizar
en todo el curso, C#. Utilizaremos dicho lenguaje por ser de ltima generacin, pensado
para los desarrolladores web y que se adapta mejor a los estndares de C++ y Java.
Para aprender a conocer el entorno y la filosofa de trabajo con Visual Studio, vamos a
comenzar realizando una pgina ASP.NET sencilla, cuya funcin ser simplemente mostrar el
mensaje Hola Mundo cuando pulsemos sobre el botn incluido en la pgina. De esta
forma, adems de conocer Visual Studio, nos familiarizaremos con ASP.NET y el lenguaje
C#.
El proceso de creacin de la pgina es el siguiente:
1.

Abrimos Visual Studio en nuestro sistema:

Fundamentos de
programacin en C#

2. Si esta es la primera vez que ejecutamos el entorno, se mostrar una ventana de


configuracin en la que se escoge el entorno ms adecuado para nuestro trabajo. En
este caso elegimos Desarrollo web:

Esta configuracin no modifica la funcionalidad ni instala componentes adicionales,


simplemente transforma el entorno para optimizarlo a las labores que se realicen. En
cualquier caso, aprenderemos que la interfaz de usuario de Visual Studio es configurable
en cualquier momento.
Una vez seleccionada la configuracin, aparece la ventana inicial de Visual Studio, donde
podemos elegir la creacin de un nuevo proyecto. Esto tambin se puede realizar
navegando por el men Archivo.

Fundamentos de
programacin en C#

3.

Una vez creado el nuevo proyecto, es el momento de elegir una plantilla y su nombre.
Para

ello,

seleccionamos

primero

el

lenguaje

de

desarrollo

(Visual

C#),

posteriormente, entre las diferentes plantillas que aparecen, escogemos Aplicacin


web ASP.NET y procedemos a darle un nombre, en nuestro caso WebHolaMundo.
Adicionalmente, podramos elegir la ubicacin de nuestro proyecto, no obstante, ahora
dejaremos la que aparece por defecto.

Fundamentos de
programacin en C#

4.

A continuacin, nos encontramos en el entorno de desarrollo donde podemos crear


nuestro proyecto.

Como podemos observar en la imagen anterior, la pgina de inicio del proyecto se


denomina Default.aspx, la cual, si no indicamos lo contrario, ser la primera pgina
que se mostrar en el navegador al ejecutar la aplicacin.
Microsoft recomienda que para realizar la programacin dinmica se emplee el modelo
code-behind (cdigo trasero o cdigo oculto). Con esta tcnica se separa la parte del
cdigo C# de la parte visual que es la que se presenta al usuario, lo cual aporta grandes
ventajas en el desarrollo web pues supone diferenciar la interfaz del cdigo de
funcionamiento. La parte de cdigo (o lgica), se encuentra en un archivo con extensin
.cs, en el que se encuentra la definicin de las clases con sus mtodos y atributos. La
interfaz de usuario, que es la presentacin de la aplicacin, est almacenada en un
archivo con extensin .aspx.
Por otra parte, mediante el men de vistas, podemos alternar entre las vistas Diseo,
Cdigo o Dividir. En esta ltima, se mostrarn ambas vistas de forma simultnea en la
pantalla.

Fundamentos de
programacin en C#

Es interesante que practiquemos con las ventanas de la interfaz, pues son configurables
a nuestro modo de trabajar, pudindolas fijas, ocultar, cambiar de lugar o hacerlas
flotantes.

5.

Seguidamente, vamos a cambiar el nombre de la pgina para que, al ser cargada por el
navegador,

tenga

un

nombre

distintivo.

En

nuestro

caso

la

llamaremos

HolaMundo.aspx. Para ello, seleccionamos en la Ventana Explorador de soluciones


el nombre del fichero y pulsamos con el botn derecho.

Fundamentos de
programacin en C#

De esta forma, cambia el nombre tanto del fichero de cdigo como de la interfaz.

Sin embargo, para nuestro ejemplo vamos a eliminar este archivo, puesto que
queremos comenzar con una pgina en blanco. Para ello, seleccionamos el archivo en el
Explorador de soluciones y pulsamos Suprimir.
Una vez realizado esto, tenemos el proyecto vaco y creamos un nuevo archivo, que
llamaremos HolaMundo.aspx y que estar en blanco, eligiendo Agregar nuevo
elemento.

A continuacin, en el men que se acaba de abrir, seleccionamos Web Forms, adems


de darle el nombre deseado:

Fundamentos de
programacin en C#

6.

En este paso vamos a incluir una etiqueta Label y un botn Button en la capa de
presentacin HolaMundo.aspx. Los controles mencionados se encuentran en el cuadro
de herramientas y solo tendremos que arrastrarlos a la vista Diseo de nuestra pgina
para insertarlos en ella.

Se puede trabajar en el modo Diseo modificando las propiedades de ambos elementos


(objetos), definiendo tamao, nombre, etc. Para ello, podemos utilizar la ventana
Propiedades:

Fundamentos de
programacin en C#

7.

Vamos a aprender a utilizar el cdigo. Para ello, pulsamos la vista Cdigo y observamos
el cdigo C# que utiliza nuestra primera pgina web:

8.

En este punto vamos a modificar el cdigo HTML para obtener el resultado deseado.
Realizaremos pues las modificaciones que sealamos a continuacin en los siguientes
ficheros:
a.

Fichero HolaMundo.aspx, en el que se define la pgina web.

La etiqueta la renombramos a lNombre y le ponemos un texto descriptivo.

Cambiamos el nombre al botn por bSaludar, a su propiedad onclick, en la


que indicamos el mtodo responsable de gestionar el evento de pulsacin del
ratn, la denominamos pulsado, y a su propiedad Text, le asignamos el
valor Plsame.

HolaMundo.aspx
<%@ Page Language="C#"
AutoEventWireup="true"
CodeBehind="HolaMundo.aspx.cs"
Inherits="WebHolaMundo.HolaMundo " %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

10

Fundamentos de
programacin en C#

<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div style="height: 33px">
<asp:Label ID="lNombre" runat="server" Text="Pulsa el botn"/>
<asp:Button ID="bSaludar" runat="server" Height="31px"
Width="48px" onclick="pulsado" Text="Plsame"/>
</div>
</form>
</body>
</html>

b.

Fichero HolaMundo.aspx.cs, donde se definen las clases y sus mtodos. En este


fichero, introducimos el siguiente cdigo:
HolaMundo.aspx.cs
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Web;
System.Web.UI;
System.Web.UI.WebControls;

public partial class HolaMundo: System.Web.UI.Page


{
protected void Page_Load(Object sender, EventArgs e)
{
}
protected void pulsado(Object sender, EventArgs e)
{
lNombre.Style["font-size"] = "XX-Large";
lNombre.Text = "Hola Mundo!";
}
}

Seguidamente, guardamos los ficheros y pulsamos el botn Iniciar depuracin o


F5, con lo que obtendremos nuestro primer formulario en ASP.NET.

11

Fundamentos de
programacin en C#

Una vez probado, no debemos olvidar detener la depuracin para seguir


trabajando:

Otra opcin para ejecutar nuestro formulario es usar la opcin Ver en el


Explorador como muestra la siguiente imagen:

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

Como recordaremos, en el fichero HolaMundo.aspx nos encontramos con la


definicin de un Web Form (formulario web), que ser el que va a contener la
etiqueta y el botn. Podemos observar que la sintaxis es muy similar a la utilizada
para definir un formulario tpico HTML, la diferencia est en la inclusin de la
propiedad runat que posee el valor server, para indicar que se trata de un
formulario de servidor. Adems, la pgina HolaMundo.aspx incorpora la directiva
Page, encerrada entre los signos <%@ %> la cual define los siguientes atributos:

Inherits. Es empleado para indicar la clase de la que hereda la pgina


HolaMundo.aspx.

12

Fundamentos de
programacin en C#

CodeBehind. Sirve para indicar el archivo compilado que contiene la clase


asociada con la pgina.

AutoEventWireup. Indica si los eventos se deben generar de forma


automtica.

Language. Especifica el lenguaje utilizado por la pgina.

Tambin, dentro del formulario se encuentran dos controles web que pertenecen a
las clases Label y Button. Recordemos que estos dos controles web son los objetos
que utilizaremos en nuestro cdigo, siendo cada uno de ellos una instancia de su
clase correspondiente.

El objeto Label representa a la etiqueta que mostrar el mensaje en la pgina.

El objeto Button es el botn que invocar al mtodo pulsado cuando el usuario


haga clic sobre l.

Estos dos controles tienen un atributo id, que es el nombre que lo identifica y a
travs del cual podremos acceder a sus propiedades. As, en el mtodo pulsado
utilizamos el identificador etiqueta para acceder al objeto Label y modificar el
valor de su propiedad Text, que de forma predeterminada es una cadena vaca.
Adems, el control Button posee la propiedad onclick, en la que podemos indicar el
mtodo responsable de tratar el evento de pulsacin.
En holamundo.aspx.cs tenemos el mtodo void pulsado(object sender, EventArgs
e), que se ejecutar cuando el usuario pulse el botn que pertenece al Web Form.
Este mtodo trata el evento de pulsacin del botn (onclick=pulsado en la
definicin

del

control

<asp:button>

del

fichero

holamundo.aspx).

Adems,

devuelve void, es decir, ningn valor, y recibe dos parmetros, el primero de tipo
object y el segundo de tipo EventArgs, que ofrecen informacin acerca del evento
que se ha producido, aunque en este ejemplo no usamos dichos parmetros porque
no son necesarios para mostrar nuestro mensaje.
Dentro del mtodo pulsado accedemos al estilo de la etiqueta definida
(lNombre.Style["font-size"]) para darle un tamao determinado y, a continuacin,
establecemos el valor de la propiedad Text de la etiqueta con el mensaje Hola
Mundo!.

13

Fundamentos de
programacin en C#

Por ltimo, podemos observar que el delimitador de sentencias en C# es el punto y


coma (;) y el de bloques de cdigo son las llaves {}.

2.

SINTAXIS DE C#. DECLARACIN DE VARIABLES Y COMENTARIOS

El lenguaje C# presenta una serie de palabras bsicas reservadas para el propio lenguaje
que incluyen comandos, tipos, etc. Por este motivo, no podremos usarlas en nuestros
nombres de clases, variables, propiedades, funciones o mtodos. Estas palabras reservadas
son:

abstract

as

base

bool

break

byte

case

catch

char

checked

class

const

continue

decimal

default

delegate

do

double

else

enum

event

explicit

extern

false

finally

fixed

float

for

foreach

goto

if

implicit

in

int

interface

internal

is

lock

long

namespace

new

null

object

operator

out

override

params

private

protected

public

readonly

ref

return

sbyte

sealed

short

sizeof

stackalloc

static

string

struct

switch

this

throw

true

try

typeof

uint

ulong

unchecked

unsafe

ushort

using

virtual

void

volatile

while

El objetivo de esta lista no es memorizarlas, tan solo tiene inters como punto de referencia,
las iremos utilizando segn avance el curso.
Es importante indicar que el lenguaje C# es sensible a maysculas y minsculas, en ingls a
esta propiedad se la denomina case sensitive. Debido a ella, hay que prestar atencin y
tener cuidado en su uso, puesto que no solo puede afectar a que durante la compilacin del
cdigo no sean reconocidas palabras reservadas del lenguaje, sino que pueden crear
confusin y graves prdidas de tiempo al cambiarse el nombre de las variables por uso

14

Fundamentos de
programacin en C#

diferente de maysculas y minsculas. Esto puede crear desde errores en tiempo de


compilacin hasta errores durante la ejecucin, con comportamientos extraos al utilizar
diferentes variables pensando que son la misma, por ejemplo, lNombre y Lnombre en
nuestro ejemplo seran dos identificadores diferentes.
2.1.

TIPOS PREDEFINIDOS

C# provee de 15 tipos predefinidos, los cuales se muestran en la siguiente figura:

Tipos
predefinidos

Simple

object

No numricos

bool

char

string

Numrico

Entero

Punto flotante

decimal

8-Bit
sbyte

16-Bit
byte

short

32-Bit
ushort

int

float

double

64-Bit
uint

long

ulong

Los tipos predefinidos simples incluyen 11 tipos numricos:

Ocho tipos enteros con distintas longitudes, con signo y sin signo.

Tipos de punto flotante -float y double-.

Decimales de alta precisin llamados decimal. A diferencia de los tipos float y double, el
tipo decimal puede representar nmeros fraccionarios decimales exactos. Se usa
frecuentemente para clculos monetarios.

15

Fundamentos de
programacin en C#

Los tipos predefinidos simples no numricos son:

Un tipo carcter, llamado char.

Un tipo bool que representa valores booleanos y toman como valor true o false.

Por otra parte, los dos tipos no simples son los siguientes:

El tipo string, que es un array (vector o matriz) de caracteres.

El tipo object, que es el tipo en el cual est basado el resto de los tipos.

En resumen son:

Nombre corto

Tipo

Longitud bits

Intervalo valores (decimal)

byte

Entero sin signo

0 a 255

sbyte

Entero con signo

-128 a 127

int

Entero con signo

32

-2.147.483.648 a 2.147.483.647

uint

Entero sin signo

32

0 a 4294967295

short

Entero con signo

16

-32.768 a 32.767

ushort

Entero sin signo

16

0 a 65535

long

Entero con signo

64

-922337203685477508

ulong

Entero sin signo

float

double

Tipo

de

punto

922337203685477507
64

0 a 18446744073709551615

flotante

de

32

-3,402823e38 a 3,402823e38

flotante

de

64

-1,79769313486232e308

precisin simple
Tipo

de

punto

precisin doble
Un carcter Unicode

16

bool

Tipo Boolean lgico

string

Smbolos Unicode
True o false

Tipo base de todos los otros


tipos
Una secuencia de caracteres
Tipo

decimal

1,79769313486232e308

char

object

preciso

fraccionario

integral,

puede

nmeros

decimales

128

1.0 10e28 a 7.9 10e28

representar
con

29

dgitos significativos

A continuacin, vamos a describir un pequeo ejemplo donde definimos una serie de


variables y su uso:
1.

Creamos un nuevo proyecto, que denominamos SumaNumeros, el cual definimos en


C# como Aplicacin web vaca de ASP.NET.

16

Fundamentos de
programacin en C#

2.

Le agregamos un nuevo elemento que ser la pgina web aspx que vamos a crear,
eligiendo, por ello, Web Forms.

3.

En el formulario web creado, en modo Diseo, introducimos desde el cuadro de


herramientas, tres Label, tres TextBox y un Buttom, resultando el siguiente diseo:

4.

Ahora hay que escribir el cdigo de nuestro pequeo formulario. Para ello, pulsamos
sobre la vista Cdigo y cambiamos la identificacin de los TextBox para referirlos
correctamente:

17

Fundamentos de
programacin en C#

5.

Seguidamente, abrimos el fichero de cdigo que definir los mtodos. Lo primero ser
definir nuestras variables de tipo entero:
public int vara = 25;
public int varb = 125;
Las definimos como pblicas pues deseamos que el mtodo sumar, que se ejecutar al
pulsar el botn, tenga acceso a ellas. Asimismo, definimos la variable resultado, cuyo
valor ser la suma de vara y varb:
int result = vara + varb;

Por otra parte, podemos observar el funcionamiento de los eventos:

Page_Load se produce siempre que se carga la pgina en el navegador. De esta


forma, podemos mostrar los valores de las variables.
Se utiliza el mtodo System.Convert.ToString (valor); para convertir los valores
enteros de las variables en cadenas de caracteres (string), pues es el tipo de la
propiedad Text de cada elemento TextBox que tenemos insertado en la pgina.

El evento que se ejecutar al pulsar el botn es sumar. Al ser lanzado, suma los
valores de las dos variables pblicas vara y varb, y los asigna a la variable privada
result, para posteriormente convertirla en cadena y asignarla a la propiedad Text
del control txtVarResultado de nuestra pgina.

18

Fundamentos de
programacin en C#

Se obtiene finalmente el siguiente resultado:

2.2.

TIPOS DEFINIDOS POR EL USUARIO

Adems de los 15 tipos primitivos que nos provee C#, tambin podemos crear los nuestros
propios. Estos tipos son estructuras de datos ms complejas, formados habitualmente por
otros tipos de datos. Son los siguientes:

Tipo enum: define enumeraciones de constantes de tipos bsicos.

enum dias {Lunes, Martes, Mircoles, Jueves, Viernes, Sbado, Domingo };


Los enumeradores tienen una numeracin predeterminada, comenzando por 0, de tipo
int. As Lunes es 0, Marte 1, etc.
Esta numeracin puede modificarse indicando el valor de comienzo del primer
enumerador:
enum dias {Lunes = 1, Martes, Mircoles, Jueves, Viernes, Sbado, Domingo };
Para declarar la numeracin de un tipo diferente a int, se escribe:
enum dias : byte {Lunes = 1, Martes, Mircoles, Jueves, Viernes, Sbado, Domingo
};

Los tipos primitivos permitidos en la enumeracin son byte, sbyte, short, ushort, int,
uint, long y ulong.

Tipo class: define las clases. Por ejemplo:

class ClaseTest
{
// Se definen Mtodos, propiedades, campos, eventos, delegados y otras
// clases que se necesiten
}

19

Fundamentos de
programacin en C#

Tipo struct: este tipo de datos se utiliza para encapsular pequeos grupos de variables
en una estructura relacionada.

public struct Album


{
public string autor;
public string ttulo;
public int
anno;
public decimal precio;
}

Tipo delegate: se utiliza para declarar la firma de un mtodo que ser definido en una
clase1.

public delegate int tipoDelegado (string mensaje, long valor);

Tipo interface: las interfaces contienen solo las firmas de mtodos, propiedades,
eventos o indizadores, no su implementacin. Posteriormente se pueden definir clases
que implementarn esa interfaz.

Interface coordenadas
{
int x
{
get;
set;
}
int y
{
get;
set;
}
}

Finalmente, una vez hemos declarado uno de los anteriores tipos, podemos usarlos para
crear objetos, como si fuesen primitivos.

El uso de estos tipos no es objetivo del presente tema. Puede obtenerse ms informacin en:

http://msdn.microsoft.com/es-es/library/900fyy8e(v=vs.100).aspx

20

Fundamentos de
programacin en C#

2.3. DECLARACIN DE VARIABLES


Para declarar una variable (tanto si es una referencia a un objeto o a un tipo simple),
primero indicamos el tipo de la variable, es decir, el tipo simple o clase, y a continuacin el
nombre de la variable. No obstante, si la variable posee algn modificador de acceso (como
private o public) o de otro tipo, este modificador debe aparecer antes del tipo de la variable.
Ejemplo:

string cadena;
int num_aleatorio;
public DateTime fechaActual;

2.4. COMENTARIOS
Podemos utilizar comentarios de lnea simple o de un grupo de lneas:

// Cdigo comentado de lnea simple


/*

Cdigo comentado que ocupa varias lneas.


El cdigo comentado no se ejecutar.

*/

Los comentarios resultan tiles para documentar el cdigo e incluir anotaciones. De esta
forma, se explica el porqu de algunas decisiones o sentencias. Tambin son tiles para
posterior mantenimiento del cdigo e, incluso, si trabajamos en grupo, el cdigo ser ms
accesible y entendible si tiene comentarios aclaratorios.
Por todo ello, la documentacin del cdigo se considera una buena prctica del profesional en
programacin.

3.

SENTENCIAS CONDICIONALES, BUCLES Y OPERADORES

En el presente apartado, estudiaremos los conjuntos de sentencias bsicos en programacin,


incorporados en todos los algoritmos de programacin y lenguajes de programacin, excepto
algn extrao desarrollo creado para alguna solucin especfica.
Analizaremos estas sentencias explicando con ejemplos su sintaxis para, posteriormente,
desarrollar un caso prctico donde se aplique la mayora de ellas.

21

Fundamentos de
programacin en C#

3.1.

SENTENCIAS CONDICIONALES

Las sentencias condicionales son las siguientes:

Condicional if else. Su sintaxis es la siguiente (la inclusin de la sentencia else es


opcional, por eso va entre corchetes).

if (expresin)
{
//cdigo para expresin "verdadera";
}[else {
//cdigo para expresin "falsa";
}]
//Veamos un ejemplo de su uso:
protected void pulsado(Object sender, EventArgs e)
{
if (etiqueta1.Text.Equals(etiqueta2.Text))
{
Response.Write("Las etiquetas son iguales");
}
else
{
Response.Write("Las etiquetas no son iguales");
}
}

Condicional mltiple switch.

switch (expresin)
{
case expresin_constante1:
//cdigo
break;
case expresin_constante2:
//cdigo
break;
...
default:
//cdigo
break;
}

Veamos un ejemplo de su uso:

protected void pulsado(Object sender, EventArgs e)


{
string respuesta = TextBox1.Text;
switch (respuesta)
{
case "1":
Response.Write ("Ha elegido la respuesta 1");
break;
case "2":
Response.Write ("Ha elegido la respuesta 2");
break;
case "3":
Response.Write ("Ha elegido la respuesta 3");
break;

22

Fundamentos de
programacin en C#

default:
Response.Write ("Debe elegir una de estas respuestas: 1, 2,
3");
break;
}
}

3.2.

BUCLES

Los bucles se utilizan cuando queremos repetir la ejecucin de unas sentencias un nmero
indefinido de veces, siempre que se cumpla una condicin.

Bucle while. En este bucle se evala primero la condicin y si se cumple, se repetir la


ejecucin hasta que la condicin deje de hacerlo.

while (expresin)
{
//cdigo
}
//Ejemplo de su uso:
protected void pulsado(Object sender, EventArgs e)
{
int contador= 0;
while(contador <= 10)
{
Response.Write ( contador + "<br>");
contador++;
}
}

Bucle do while. Se utiliza generalmente cuando no sabemos cuantas veces se habr


de ejecutar el bucle, igual que el bucle while, con la diferencia de que sabemos seguro
que el bucle por lo menos se ejecutar una vez ya que la condicin se evala al final.

do{
//cdigo
}while (expresin);

Ejemplo de su uso:

protected void pulsado(Object sender, EventArgs e)


{
int contador = 7;
do{
Response.Write ("Quedan " + contador + "segundos para el final<br>");
System.Threading.Thread.Sleep(1000);
contador = contador - 1;
} while (contador > 0);
}

23

Fundamentos de
programacin en C#

Bucle for. Es un bucle que permite ejecutar un conjunto de sentencias un nmero


determinado de veces. Para ello, se fija el valor inicial al principio del mismo y, a
continuacin, la condicin que debe cumplir. Se ha de definir tambin el incremento que
ir tomando la variable del bucle, la cual puede ser utilizada en las funciones que
incorpora. Su expresin general sera como la siguiente:
for (inicializacin; expresion; incremento)
{
// cdigo;
}

Ejemplo de uso:

private void Pulsado(object sender, EventArgs e)


{
for (int contador = 7; contador >0; contador--)
{
Response.Write("Quedan " + contador + "segundos para el final<br>");
System.Threading.Thread.Sleep(1000);
}
}

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

foreach(tipo identificador in expresin)


{
//cdigo
}

Ejemplo de su uso:

protected void pulsado(object sender, EventArgs e)


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

24

Fundamentos de
programacin en C#

3.3.

OPERADORES

En C#, un operador es un trmino o un smbolo que acepta como entrada una o ms


expresiones, denominadas operandos y devuelve un valor, es decir, es un smbolo formado
por uno o ms caracteres que permite realizar una determinada operacin entre uno o ms
datos y produce un resultado.
En este apartado, estudiaremos los principales operadores del lenguaje C#, algunos de los
cuales ya hemos usado en los ejemplos anteriores para formar sentencias o expresiones
condicionales.

Operadores aritmticos:

Suma.

Resta.

Multiplicacin.

Divisin.

Mdulo (resto de la divisin).

++

Operador de incremento.

--

Operador de decremento.

Operadores lgicos:

&

AND: devuelve true si las dos expresiones son verdaderas.

OR: devuelve true si una de las dos expresiones es verdadera.

XOR: devuelve true si solo una de las expresiones es verdadera.

NOT: cambia una expresin de verdadera a falsa y viceversa.

&&

Similar a & pero, en el caso de que no se cumpla alguna expresin, el resto de las
comparaciones (tomndolas de izquierda a derecha) no se evaluarn y devolver
false.

||

Similar a |, pero en el caso de que se cumpla alguna expresin, el resto de las


comparaciones (tomndolas de izquierda a derecha) no se evaluarn y devolver true.

true

Literal y operador que devuelve el valor booleano de verdadero.

false

Literal y operador que devuelve el valor booleano de falso.

25

Fundamentos de
programacin en C#

Operadores de asignacin: se utilizan para asignar un valor nuevo a una variable o


propiedad. Hay que tener en cuenta que utilizar operadores compuestos en expresiones
como contador+=1 es equivalente a contador=contador+1.

Operador bsico de asignacin.

^=

Operador de potencia.

*=

Operador de multiplicacin.

/=

Operador de divisin.

+=

Operador de suma.

-=

Operador de resta.

&=

Operador de concatenacin de cadenas.

%=

Operador de mdulo.

Operadores de comparacin:

==

Igual que.

!=

Distinto que.

>

Mayor que.

<

Menor que.

>=

Mayor o igual que.

<=

Menor o igual que.

Operadores de concatenacin. Este operador sirve para unir dos cadenas de texto
(tipo string) en una sola. Es el operador ms (+).

Otros operadores:

Acceso a miembros de objetos (propiedades y mtodos).

[]

Operador de ndice, para acceder a los distintos elementos de un array.

?:

Realiza una operacin condicional en una sola lnea. Su formato es: expresin?
Caso-si-verdadero: caso-si-falso

is

Se utiliza para ver si un objeto es de un determinado tipo (o es compatible con


dicho tipo debido a la herencia).

sizeof

Devuelve el tamao en bytes de un tipo de datos.

typeof

Devuelve el tipo de un objeto.

26

Fundamentos de
programacin en C#

Ejemplo:
Vamos a desarrollar una calculadora simple que realice sumas, restas, multiplicaciones y
divisiones de enteros (en un principio vamos a definir como tal las variables, sin hacer
comprobacin de tipos). El usuario introducir dos valores y seleccionar el botn de
operacin correspondiente. La calculadora se ejecutar hasta que el usuario pulse el botn
Fin que ser la condicin del bucle. Tambin haremos la comprobacin de no dividir por
cero, dando un mensaje adecuado. Por ltimo, incluiremos la operacin factorial, para el uso
de los bucles.
Pasos que seguiremos se describen a continuacin:
1.

En Visual Studio, creamos un nuevo proyecto y elegimos en C# la plantilla Sitio Web


vaco de ASP.NET. Lo llamaremos, por ejemplo, BuclesyOperadores, almacenndolo en
el sistema de archivos.

2.

Aadimos

un

Web

Forms

como

nuevo

elemento

lo

denominamos

WebCalculadora.aspx. Ya tenemos lo bsico para trabajar.


3.

Seguidamente, vamos a insertar los controles adecuados que necesitamos para nuestra
calculadora:
a.

2 etiquetas junto a 2 TextBox para obtener los operadores.

b.

1 etiqueta y 1 TextBox para el resultado.

c.

1 TextBox que ser utilizado y solo visible si se utiliza la funcin factorial.

d.

1 etiqueta para mensajes de error.

e.

1 botn para ejecutar el mtodo.

f.

1 ListBox para seleccionar qu accin realizar.

El nuevo control web denominado ListBox es una lista de valores, de los cuales solo
uno puede ser seleccionado. Vamos a utilizarlo para elegir la operacin a realizar,
incluido el fin. Adems, en la edicin de elementos, insertamos cada uno de los
operadores seleccionables mediante el botn Agregar.

27

Fundamentos de
programacin en C#

En las propiedades Text, se escribe el texto que aparecer y en el valor, el que tomar
el objeto ListBox. As, en uno de los Miembros, por ejemplo el primero de ellos, la
suma, la marcamos como Selected, para que al ejecutarse est seleccionado y
evitamos errores si el usuario pulsa el botn sin escoger ningn operador.
4.

Cambiamos el valor de las filas a 5 y as evitamos que aparezca el scroll vertical:

5.

Ahora cambiamos las propiedades ID de cada objeto que empleemos en el cdigo, para
tener una fcil referencia. Sern: txtOperando1, txtOperando2, txtResultado,
lstOperador, btnEjecutar, txtResultado.

28

Fundamentos de
programacin en C#

6.

Modificamos la propiedad Visible de txtFactorial a False para que solo se muestre si


ejecutamos un factorial:

Tambin ponemos MultiLine para aquellas operaciones de muchos factores:

7.

Comprobamos el resultado:

8.

A continuacin, daremos valor por defecto 0 a la propiedad Text de ambos operandos,


para evitar errores posteriores.

29

Fundamentos de
programacin en C#

9.

Para finalizar en la definicin del fichero WebEjemplo.aspx, editamos su cdigo y en la


definicin del Botn Ejecutar, insertamos el evento y el mtodo llamado que se
producir al pulsarlo:

<asp:Button ID="btnEjecutar" runat="server" style="margin-left: 2px"


Text="Ejecutar" OnClick="operar" />

10. Ahora trabajamos en el cdigo de nuestra aplicacin, para lo que abrimos el fichero
WebEjemplo.aspx.cs y en el mtodo operar, escribimos el siguiente cdigo:

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;

publicpartialclassWebCalculadora:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{

}
protectedvoidoperar(objectsender,EventArgse)
{
//Definirvariablesenterasquetomenlosvaloresinsertadoscomocadenas.
intoperando1=Convert.ToInt32(txtOperando1.Text);
intoperando2=Convert.ToInt32(txtOperando2.Text);
//Variableutilizadaparaelresultado,lainiciamosalvalor0;
longresultado=0;
//Variablestemporales
intcontador;
stringfactores;

//ElTextBoxdelfactorialseocultaencadallamadadeejecucin
txtFactorial.Visible=false;

//Variablequetomaeloperadorseleccionado,setransformaaString
stringoperador=lstOperador.Items[lstOperador.SelectedIndex].ToString();

switch(operador)
{
case"Sumar":
resultado=operando1+operando2;
break;
case"Restar":
resultado=operando1operando2;
break;
case"Multiplicar":
resultado=operando1*operando2;
break;
case"Dividir":
if(operando2==0)
Response.Write("Nosepuededividirporcero");
else
resultado=operando1/operando2;
break;
case"FactorialOperador1":
if(operando1==0)
resultado=1;
else

30

Fundamentos de
programacin en C#

{
//Ponemosenmodovisibleelbloquedetexto
txtFactorial.Visible=true;

//inicializamoslasvariablesavalorneutro.
factores="";
resultado=1;

//Clculodelfactorialmediantebuclefor,puedenusarselosotros.
for(contador=operando1;contador>0;contador)
{
//pararellenarelTextBoxconlaoperacinfactorial:
if(factores=="")
//paranointroducirunsmbolo"x"alprincipio
//setransformadenumricoacadena
factores=contador.ToString();
else
factores=factores+"x"+contador;

//operacinfactorial:
resultado=resultado*contador;
};

//publicamoslaoperacinfactorialensuTextBox:
txtFactorial.Text=factores;
}
break;
}
//publicamoselresultado:
txtResultado.Text=Convert.ToString(resultado);
}
}

11. Finalmente, obtenemos el siguiente resultado:

31

Fundamentos de
programacin en C#

4.

DEFINICIN E INSTANCIACIN DE CLASES

Ya hemos aprendido a utilizar algunas clases y tenemos nociones sobre ellas. Es el momento
de formalizar cmo se definen y se instancian para crear objetos.
4.1.

DEFINICIN DE UNA CLASE

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

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

Un namespace es una forma de clasificar y organizar clases para evitar conflictos de


nombres (podemos tener clases con igual nombre en distintos namespaces). Cada
namespace contiene un conjunto de clases relacionadas (como una librera).
Incluiremos una sentencia using por cada uno de los espacios de nombres (namespaces)
que necesitemos. Esta utilizacin es equivalente a las bibliotecas de funciones en lenguajes
estructurados. Mediante esta sentencia, podemos referenciar a otros namespaces y as poder
utilizar las clases que incorporan. De la misma forma, se podra utilizar nuestra clase si se
referenciase su namespace mediante using en una clase ajena: Para ello, antes debemos
definir nuestra clase dentro de un namespace utilizando la palabra clave namespace
seguida del nombre que le damos a nuestro propio espacio de nombres.
Por otra parte, entre las llaves del namespace incluimos la declaracin de la clase. As, para
declarar una clase, hay que definir los modificadores de la clase (que sirven para definir
las caractersticas de accesibilidad a dicha clase), la palabra reservada class y el nombre que
hemos elegido para la clase que estamos definiendo. Por ejemplo:

public class MiClase

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

32

Fundamentos de
programacin en C#

4.2. INSTANCIACIN DE UNA CLASE


Instanciar una clase significa crear un objeto que tiene sus propiedades y mtodos, con el
cual se puede comenzar a trabajar. Siguiendo el smil del molde, el cual sera la clase, el
objeto es el elemento que se obtiene de dicho molde.
Para crear una nueva instancia de una clase (nuestra o de las proporcionadas por el entorno)
utilizamos el operador new.

Clase nombre_objeto = new Clase();

Este operador informa al sistema de que queremos crear un nuevo objeto, al cual debemos
asignar un nombre, nombre_objeto. Cuando se utiliza este operador, el sistema crea un
espacio en el sistema que tendr la estructura de la clase y estar referenciado por el
nombre del objeto. Adicionalmente, llama automticamente al constructor de la clase, el
cual inicializa las propiedades de la actual instancia (objeto) que hemos creado. El
constructor es un mtodo especial de las clases, que tiene el mismo nombre que su clase y
se ejecuta al instanciarse.
Como se ha comentado, al instanciar una clase se ocupa espacio del sistema (memoria), la
cual en grandes aplicaciones puede suponer un consumo importante si no se gestionan
adecuadamente y se eliminan las que no se utilicen. Por ello, el CLR de Microsoft .NET cuenta
con un recolector de basura que se encarga de liberar automticamente todos los objetos
creados mediante el operador new cuando detecta que el objeto deja de ser utilizado.
Seguidamente, vamos a ver un ejemplo de clases, donde crearemos un proyecto en Visual
Studio, que se denomine WebVehiculos, y los elementos necesarios. As, en principio
vamos a insertar un Web Form, denominado paginavehiculos, por lo que tendremos dos
ficheros en ASP.NET: paginavehiculos.aspx y paginavehiculos.aspx.cs.

33

Fundamentos de
programacin en C#

Adicionalmente vamos a crear un archivo Vehiculo.cs que contiene una clase denominada
Vehiculo, dentro del espacio de nombres aplicacionvehiculosWeb. Para ello, elegimos
nuevamente el botn Agregar nuevo elemento y seleccionamos:

Una vez hecho esto, se muestra la advertencia adjunta, a la cual vamos a responder S para
tener nuestro proyecto adecuadamente organizado:

La estructura final de nuestro proyecto es:

34

Fundamentos de
programacin en C#

Veamos el cdigo de cada fichero:

Vehiculo.cs
using System;
namespace aplicacionvehiculosWeb
{
public class Vehiculo
{
private int n_puertas = 0;
private string marca = ;
public Vehiculo (int num_puertas, string nombre_marca)
{
n_puertas = num_puertas;
marca = nombre_marca;
}
// Definimos los mtodos get
public string getMarca()
{
return marca;
}
public int getNumeroPuertas()
{
return n_puertas;
}
}
}

Los mtodos get y put son unas estandarizaciones por convenio de mtodos utilizados para
obtener y asignar valores a las propiedades de las clases. Son una forma de implementar la
encapsulacin de las clases, permitiendo solamente el acceso a sus propiedades mediante
estos mtodos.
A continuacin, vamos a desarrollar el formulario web de paginavehiculos.aspx insertando un
botn y definiendo su mtodo:

paginavehiculos.aspx
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="paginavehiculos.aspx.cs"
Inherits="paginavehiculos"%>

<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="btnMostrar" runat="server" onclick="mostrar" Text="Mostrar
Vehculo" />
</div>
</form>
</body>
</html>

35

Fundamentos de
programacin en C#

Ahora, desarrollamos el comportamiento del mtodo mostrar cuando se pulsa el botn


Mostrar Vehculo:

paginavehiculos.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;

/*seindicaelusodelespaciodenombrescreadoenelficheroVehiculo.cs,
ellopermiteutilizarlaclaseVehiculo*/

usingaplicacionvehiculosWeb;

publicpartialclasspaginavehiculos:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{

}
protectedvoidmostrar(Objectsender,EventArgse)
{
Vehiculocoche1=newVehiculo(5,"Renault");
Response.Write(coche1.getMarca()+"<br>");
Response.Write("Elnmerodepuertases:"+coche1.getNumeroPuertas()+
"<br>");
}
}

El resultado final que obtendremos ser:

Como hemos visto, cuando aadimos una clase nueva al proyecto, Visual Studio nos
preguntar si queremos guardar el fichero en la carpeta App_Code. Si decimos que s, no
har

falta usar

la

directiva

Assembly

puesto

que

el

cdigo

fuente

se

compilar

automticamente y la carpeta App_Code ser creada automticamente por Visual Studio


en el caso de no haberlo hecho ya el usuario.

36

Fundamentos de
programacin en C#

Repasemos el funcionamiento de este sencillo ejemplo: hemos insertado un objeto Button cuyo evento
onclick ser el desencadenante de la llamada al mtodo mostrar() del fichero paginavehiculos.aspx.cs.
En este mtodo creamos una nueva instancia de la clase Vehiculo mediante el operador new. Lo
inicializamos con 5 puertas y marca Renault (valor para sus propiedades), y una vez ya tenemos
creado nuestro objeto, podemos acceder a sus mtodos miembro disponibles (getMarca() y
getNumeroPuertas()).
Por

ltimo,

en

la

cabecera

del

fichero

paginavehiculos.aspx.cs,

importamos

el

namespace

aplicacionvehiculosWeb con using, para poder hacer referencia a la clase Vehiculo que est
contenida en ese espacio de nombres.

5.

MANEJADORES DE EVENTOS

Se trata de mtodos especiales que se encargan del tratamiento de eventos en el cliente


(por ejemplo, pulsar un botn o cambiar la opcin de un desplegable), pero que ejecutan
cdigo de servidor.
Estos mtodos para el tratamiento de eventos poseen parmetros (recordemos el mtodo
pulsado de nuestra primera pgina ASP.NET, que mostraba el mensaje Hola mundo al hacer
clic sobre el botn plsame, al comienzo de este tema):

El control que gener el evento (en dicho ejemplo, el botn plsame).

Los argumentos adicionales que necesite el mtodo y que normalmente dependern del
tipo de evento a tratar.

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

void NombreMtodo(Object origen, EventArgs argumentos)


{
//cdigo de tratamiento del evento
}

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

37

Fundamentos de
programacin en C#

Este tratamiento se conoce como gestin estructurada de excepciones, que manejamos


con las siguientes palabras reservadas:

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

catch. Con ella definimos el cdigo que debe ejecutarse cuando se produce la excepcin
o situacin anmala. Podemos tener mltiples catch para un solo try, ejecutndose
aquel catch que tenga el tipo de excepcin u error.

finally. Define el cdigo que se ejecutar siempre despus de llevarse a cabo el cdigo
dentro de una sentencia try, es decir, el cdigo que pongamos en este bloque se
ejecutar siempre, independientemente de si se ha producido o no una excepcin.
throw. Esta sentencia se utiliza para lanzar2 una excepcin. Debe ir seguida de un

objeto que representa la excepcin que se ha producido (debe ser un objeto que hereda
de la clase System.Exception).
La sintaxis de un bloque try-catch-finally es la siguiente:
try
{
//cdigo a inspeccionar
}catch (tipo de excepcin variable) {
//tratamiento de esta excepcin
}catch (tipo de excepcin variable) {
//tratamiento de esta excepcin
}
[ ... ]
finally
{
//cdigo que siempre se ejecutar, se produzca o no una excepcin en el //bloque
try
}

Para

ver

un

ejemplo,

retomamos

nuestra

pequea

calculadora

que

desarrollamos

anteriormente. En esta ocasin, vamos a utilizar las excepciones para tratar adecuadamente
la operacin de divisin si en el operando 2 el usuario introduce un cero.
Una operacin de divisin por cero produce en el entorno de ejecucin una excepcin del tipo
System.DivideByZeroException, que deriva directamente de la clase System.Exception. Esta
excepcin es la que nos encargaremos de capturar de forma adecuada mediante una
sentencia catch y presentaremos al usuario un mensaje de error.

Lanzar la excepcin significa que dicho error puede propagarse y ser tratado en otro punto de la
secuencia de llamadas a mtodos.

38

Fundamentos de
programacin en C#

case "Dividir":
try
{
resultado = operando1 / operando2;
} catch (System.DivideByZeroException error)
{
Response.Write("Error: "+ error.Message + "Introduzca un valor correcto en
Operando 2 <br> <br>");
}
break;
case "Factorial Operador 1":

De esta forma, obtenemos el siguiente resultado, el cual a nivel de cdigo es ms elegante y


eficiente que en la versin anterior:

7.

MODIFICADORES

Hemos estudiado algunos modificadores en los diferentes ejemplos mostrados. Se trata de


palabras clave cuya funcin es especificar el mbito o cualidad de nuestra clase, objeto,
variable o mtodo. En este apartado se definen con ms detalle.
7.1.

MODIFICADORES DE ACCESO

Estos modificadores se encargan de especificar el nivel de accesibilidad de los miembros de


las clases (propiedades y mtodos). Disponemos de los siguientes:

public. Informa al entorno de que la propiedad o mtodo es accesible desde cualquier


clase o parte del programa. Este modificador otorga el mximo nivel de accesibilidad.

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


nicamente es accesible desde los mtodos internos de la misma clase (es decir, solo
podemos acceder a un miembro private desde la propia clase, no desde otras clases, ni

39

Fundamentos de
programacin en C#

siquiera desde las subclases que hereden de la clase que contiene los miembros
private).

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

internal. Los miembros que llevan este modificador solo son accesibles desde el
paquete actual.

7.2.

OTROS MODIFICADORES

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


clase. Estos son:

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

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

readonly. Este modificador marca a una propiedad como de slo lectura o constante,
difiere de const en que adems de inicializarse en su declaracin, puede hacerlo un
constructor de la clase que lo contiene.

extern. Este modificador se aplica a un mtodo e indica que la implementacin de dicho


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

sealed. Es aplicable exclusivamente a las clases y significa que no se puede heredar.

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

40

Fundamentos de
programacin en C#

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

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

41

recuerde_

Fundamentos de
programacin en C#

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


caracteriza por:

Es un lenguaje orientado a objetos que permite aplicar los mecanismos


propios de la POO, como derivacin, abstraccin o encapsulamiento.

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

Distingue entre maysculas y minsculas.

Cuenta con las estructuras tpicas (sentencias condicionales, bucles,


operadores, modificadores, etc.).

Permite una gestin estructurada de excepciones con la que controlar los


errores o las situaciones anmalas que puedan ocurrir durante la
ejecucin de nuestra aplicacin.

Permite separar la interfaz de usuario de la lgica de la aplicacin


(tcnica Code-Behind).

42

glosario_

Fundamentos de
programacin en C#

A
API

(Application

Programming

Interface

Interfaz

de

programacin

de

aplicaciones). Es el conjunto de funciones y procedimientos que ofrece una


biblioteca especfica para la comunicacin entre componentes software.
ASP (Active Server Pages). Pginas activas del servidor Internet Information
Server. ASP es la versin anterior a la tecnologa ASP.NET de Microsoft.
C
CLR (Common Language Runtime). Motor de ejecucin comn incluido en el
paquete Microsoft .NET.
CSS (Cascading Style Sheets - Hojas de Estilo en Cascada). Se utilizan para dar
formato a documentos HTML o XML, separando los datos del formato de
presentacin.
CTS (Common Type System). Especificacin de tipos bsicos para la integracin
de distintos lenguajes de programacin en Microsoft .NET (como C#, Visual Basic
.NET, JScript, .NET).
C#. Lenguaje creado por Microsoft para su plataforma .NET. Es parecido a C++ y
Java.
D
DHTML (Dinamic HTML - HTML dinmico). Se forma de una conjuncin de HTML,
hojas de estilo en cascada (CSS) y lenguajes de Script como JavaScript o
VBScript.
DLL (Dynamic Link Library - Bibliotecas de Enlace Dinmico). Es un archivo que
contiene funciones que se pueden llamar desde aplicaciones u otras DLL. Los
desarrolladores utilizan las DLL para poder reciclar el cdigo y aislar las
diferentes tareas. Las DLL no pueden ejecutarse directamente, es necesario
llamarlas desde un cdigo externo. Las DLL de Windows permiten que las
aplicaciones puedan operar en el entorno de Windows.
F
Framework (Marco de trabajo). Es un esquema o estructura que puede incluir
soporte

de

programas,

bibliotecas

un

lenguaje

interpretado

organizacin, desarrollo y/o la implementacin de una aplicacin.

43

para

la

glosario_

Fundamentos de
programacin en C#

H
HTML (HiperText Markup Language). Lenguaje para la creacin de pginas web
relacionadas entre s por hipertexto.
HTTP (HiperText Transport Protocol). Protocolo de comunicaciones utilizado por
los navegadores de Internet para el acceso a recursos web, como ficheros de
imgenes, vdeo, pginas HTML, pginas ASP, pginas ASPX, etc.
I
IIS (Internet Information Server). Es el servidor web de Microsoft. ASP.NET
funciona sobre l.
J
Java. Lenguaje de programacin orientado a objetos desarrollado por Sun
Microsystems.
JavaScript. Lenguaje de Script desarrollado por Netscape y utilizado en los
navegadores de Internet.
M
MDAC (Microsoft Data Access Components). Componentes Microsoft de acceso a
datos.
MFC (Microsoft Fundation Classes). Librera basada en jerarqua de clases.
Bsicamente encapsula el API de Windows en una forma orientada a objetos.
MSIL. Lenguaje intermedio para la ejecucin de aplicaciones en Microsoft .NET.
P
PHP (Personal Home Page - Procesador de hipertexto). Las pginas PHP
presentan una tcnica similar a las pginas ASP de Microsoft, es decir, las
pginas HTML incluyen el cdigo PHP embebido en ellas y al ejecutarlas, se
genera cdigo HTML dinmicamente.
Proceso de negocio. Es un conjunto de tareas relacionadas lgicamente, que
toman uno o ms tipos de entradas (inputs), llevadas a cabo para lograr un
resultado de negocio definido (outputs). Tambin puede verse como un conjunto
de actividades que colectivamente consiguen alcanzar un objetivo de negocio.

44

glosario_

Fundamentos de
programacin en C#

Es, por ejemplo, el proceso a travs del cual una organizacin ofrece sus
servicios a sus clientes.
R
RAD (Rapid Application Development - Desarrollo rpido de aplicaciones). Es un
proceso de desarrollo de software desarrollado inicialmente en 1980. Tiende a
englobar la usabilidad, la utilidad y la rapidez de ejecucin.
RIA (Rich Internet Applications - aplicaciones de Internet enriquecidas). Son un
nuevo tipo de aplicaciones con ms ventajas que las tradicionales aplicaciones
web. Esta surge como una combinacin de las ventajas que ofrecen las
aplicaciones web y las aplicaciones tradicionales.
S
Script. Es un guion o conjunto de instrucciones. Permiten la automatizacin de
tareas creando pequeas utilidades.
SDK (Software Development Kit - kit de desarrollo de software). Es un conjunto
de herramientas de desarrollo que le permite a un programador crear software.
V
VBScript (Visual Basic Script). Lenguaje de Script desarrollado por Microsoft.
X
XML (eXtensible Markup Language - lenguaje de marcado extensible). Se utiliza
para la construccin de documentos de datos estructurados multi-propsito.

45

referencias web_

Fundamentos de
programacin en C#

Informacin y recursos para crear

http://msdn.microsoft.com/es-

pginas web ASP.NET

es/asp.net

Referencia

completa

de

todas

las

http://msdn.microsoft.com/es-

directivas en ASP.NET.

es/library/xz702w3e.aspx

Blog sobre ASP.NET

http://www.asp.net/es/aprender/

Pgina

con

recursos

formativos,

http://www.elguille.info/NET/ASPNET

ejemplo, etc. de ASP.NET

/Default.aspx

The Official Microsoft ASP.NET Site

http://www.asp.net/
http://msdn.microsoft.com/es-

Informacin general sobre ASP.NET

es/library/4w3ex9c2.aspx#VisualWe
bDeveloper

Herramientas imprescindibles para un


desarrollador de .NET

http://www.genbetadev.com/herrami
entas/herramientas-imprescindiblespara-un-desarrollador-de-net

47

bibliografa_

Fundamentos de
programacin en C#

Griffiths, Ian; Adams, Matthew; Liberty, Jesse. Programming C# 4.0. 6th Edition.
OReilly. 2010.
MacDonald, Matthew. Beginning ASP.NET 4 in CSharp 2010. Apress. Washington.
2010.
Mackey, Alex. Introducing .NET 4.0 with Visual Studio 2010. Apress. 2010.
Mueller, John Paul. Start Here! Learn Microsoft Visual C# 2010. OReilly Media,
Inc. 2011.
Northrup, Tony; Snell, Mike. Exam 70-515: Web Applications Development with
Microsoft .NET Framework 4. Microsoft Press. 2010.
Shepherd, George. Microsoft ASP.NET 4 Step by Step. Microsoft Press. 2010.
Stephen, Rob. Start Here! Fundamentals of Microsoft .NET Programming. OReilly
Media, Inc. 2011.

49

ndice_

Conceptos de
Web Forms

1. CONCEPTOS DE WEB FORMS .............................................................3


2. LA CLASE PAGE ................................................................................3
2.1. EVENTOS DE LA PGINA ..........................................................3
2.2. PROPIEDADES DE LA CLASE PAGE ............................................6
2.3. MTODOS DE LA CLASE PAGE .................................................10
3. WEB FORMS ...................................................................................10
4. INTRODUCCIN A LOS CONTROLES DE SERVIDOR DE ASP.NET ....... 12
5. INTRODUCCIN A LOS CONTROLES HTML.......................................14
5.1. EJEMPLOS CON CONTROLES HTML ..........................................17
6. INTRODUCCIN A LOS CONTROLES WEB ........................................23
6.1. EJEMPLOS CON CONTROLES WEB ...........................................26
7. DIRECTIVAS DE PGINA ................................................................35
7.1. LA DIRECTIVA @PAGE ............................................................36
7.2. LA DIRECTIVA @IMPORT ........................................................38
7.3. LA DIRECTIVA @IMPLEMENTS ................................................39
8. FICHEROS GLOBAL.ASAX Y WEB.CONFIG ........................................39
8.1. EL FICHERO GLOBAL.ASAX .....................................................40
8.1.1.

Eventos de servidor ..................................................42

8.2. EL FICHERO WEB.CONFIG ......................................................44


8.3. FORMATO DE LOS FICHEROS DE CONFIGURACIN ................. 45

formacin digital

9. EJEMPLO DE MANEJADOR HTTP ......................................................46


GLOSARIO ...........................................................................................53
REFERENCIAS WEB ..............................................................................57
BIBLIOGRAFA ....................................................................................59

Conceptos de
Web Forms
1.

CONCEPTOS DE WEB FORMS

En este tema veremos una introduccin a los controles web que pueden utilizarse en un Web
Form (formulario ASP.NET). Como estos controles los incluiremos en una pgina ASP.NET,
estudiaremos antes la clase Page, ya que podemos representar a la pgina ASP.NET actual
como un objeto de esta clase.

2.

LA CLASE PAGE

Cada vez que solicitamos una pgina ASP.NET a un servidor web, es decir, cada vez que un
cliente mediante su navegador solicita una URL que hace referencia a un fichero .ASPX en el
servidor, se crea una serie de componentes que construyen la pgina solicitada y que se
compilan en una unidad. Estos componentes pueden ser: el fichero .ASPX solicitado, los
controles de la pgina, las clases que contiene el cdigo de la pgina, etc.
Los

distintos

componentes

compilados

dan

lugar

un

objeto

de

la

clase

Object.Control.TemplateControl.Page. Esta clase se crea de forma dinmica. Adems, se


crear una instancia cada vez que se realice una peticin del fichero .ASPX.
Dentro del cdigo de una pgina, siempre vamos a tener acceso a la clase Page, pues
podemos decir que la pgina ASP.NET actual es el objeto que instancia la clase Page. Este
objeto nos sirve como contenedor de todos los componentes que constituyen la pgina y nos
permite acceder a sus propiedades, mtodos y eventos.
En los siguientes apartados, vamos a comentar los principales eventos, propiedades y
mtodos que nos ofrece la clase Page.
2.1.

EVENTOS DE LA PGINA

Cuando se solicita una pgina ASP.NET desde un navegador, se desencadena una serie de
eventos de pgina. Estos eventos siempre ocurren en un mismo orden, denominado ciclo de
vida de los eventos de pgina, el cual es:

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

Conceptos de
Web Forms

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

PreRender: tiene lugar justo antes de enviar la informacin al cliente. Siempre es


lanzado despus del evento Load. Lo tratamos en el mtodo Page_PreRender.

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

INIT
UNLOAD

PRERENDER
LOAD

Conceptos de
Web Forms
Veamos un sencillo ejemplo de uso de estos mtodos:

ejemploEventos.aspx

<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="ejemploEventos.aspx.cs"
Inherits="ejemploEventos"%>

<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headid="Head1"runat="server">
<title>EjemplodeejecucindeloseventosenunapginaASP.NET</title>
</head>
<body>
<formid="form1"runat="server">
<div>
<asp:LabelID="Label2"runat="server">Eventosdelapgina</asp:Label>
</div>
</form>
</body>
</html>

ejemploEventos.aspx.cs

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;

publicpartialclassejemploEventos:System.Web.UI.Page
{
protectedvoidPage_Init(Objectsender,EventArgse)
{
Page.Response.Write("EstetextoseescribecuandoselanzaelEventoInit<br>");
}

protectedvoidPage_Load(objectsender,EventArgse)
{
Page.Response.Write("EstetextoseescribecuandoselanzaelEventoLoad<br>");
}

Conceptos de
Web Forms
protectedvoidPage_PreRender(Objectorigen,EventArgsargs)
{
Page.Response.Write("EstetextoseescribecuandoselanzaelEventoPreRender<br>");
}

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

2.2.

PROPIEDADES DE LA CLASE PAGE

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

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

La clase Page dispone de una serie de propiedades interesantes de conocer. Las principales
son:

Application:

esta

propiedad

es

una

referencia

un

objeto

de

la

clase

System.Web.HttpApplicationState. Nos permite almacenar y acceder a informacin


compartida y comn a toda la aplicacin web.

Conceptos de
Web Forms

ClientTarget: es un objeto de la clase String. Nos permite sobrescribir la deteccin


automtica de navegador web ofrecida por ASP.NET y especificar cmo escribir la pgina
para navegadores concretos.

EnableViewState:

propiedad

de

tipo

Boolean

que

nos

permite

desactivar

el

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

IsPostBack: propiedad de tipo Boolean que devuelve true si la pgina actual ya ha sido
enviada al servidor en alguna ocasin. Si tiene el valor False, significa que es la primera
vez que se carga la pgina. Cuando lancemos mediante algn control de nuevo la
pgina al servidor (por ejemplo, pulsemos un botn), la pgina ser enviada al servidor
y regenerada, por lo que su valor se torna a True. Este indicador nos servir para
inicializar los controles web y propiedades de la pgina.

Request:

esta

propiedad

es

una

referencia

un

objeto

de

la

clase

System.Web.HttpRequest. Esta propiedad nos permite acceder a toda la informacin


necesaria de la peticin del protocolo HTTP que ha sido utilizada para solicitar la pgina
al servidor web. Cuando esto ocurre, se genera un objeto HttpRequest para tratar con
toda la informacin enviada. De este modo, Request representa la peticin de un
cliente. Request.UserHostAddress obtiene la IP del host del cliente remoto.

Response: esta propiedad es una referencia a un objeto de la clase System.Web. Nos


permite manipular la respuesta devuelta al cliente que ha realizado la peticin de la
pgina, es decir, este objeto representa la respuesta HTTP que se enva del servidor al
cliente.

Server: este atributo es una referencia a un objeto de la clase System.Web. Entre sus
principales funcionalidades est la creacin de componentes existentes en el servidor.
En ASP.NET los objetos se crean de distinta manera, importamos el espacio de nombres
necesario (para tener acceso a todas sus clases) y a travs del operador new creamos
nuevas instancias de objetos.

Session:

esta

propiedad

es

una

referencia

un

objeto

de

la

clase

System.Web.SessionState.HttpSessionState. Nos permite almacenar informacin entre


diferentes pginas incluidas en una misma aplicacin ASP.NET para cada usuario.

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

Conceptos de
Web Forms
A continuacin, veremos un ejemplo con el que aprenderemos ms sobre las propiedades de
la clase Page.
En ocasiones, es muy til conseguir que se ejecute algo solo cuando se carga la pgina por
primera vez o todo lo contrario, que se ejecute solo a partir de la primera carga. Esto se
consigue con la propiedad Page.IsPostBack.
De esta manera, queremos que aparezca la fecha y hora de la primera vez que se carga la
pgina y que esta se mantenga, aunque la pgina se refresque. Esto se realiza, cuando por
ejemplo, pulsamos un botn.

EjemploPage.aspx
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="ejemploPage.aspx.cs"
Inherits="ejPostBack"%>

<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headid="Head1"runat="server">
<title>EjemplodeejecucindeloseventosenunapginaASP.NET</title>
</head>
<body>
<formid="form1"runat="server"visible="True">
<asp:ButtonID="Button1"runat="server"onclick="Button1_Click"Text="Button1"/>
<asp:ButtonID="Button2"runat="server"onclick="Button2_Click"Text="Button2"/><br/>
<asp:LabelID="Label1"runat="server"></asp:Label>
</form>
</body>
</html>

Tenemos el siguiente diseo:

Conceptos de
Web Forms
EjemploPage.aspx.cs

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;

publicpartialclassejPostBack:System.Web.UI.Page
{
protectedvoidPage_Load(Objectsender,EventArgse)
{
//Secompruebaqueeslaprimeracarga:NoPostBack
if(!Page.IsPostBack)
{
Label1.Text=DateTime.Now.ToString();
}
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
Page.Response.Write("Haspulsadoelbotn1<br>");
}
protectedvoidButton2_Click(objectsender,EventArgse)
{
Page.Response.Write("Haspulsadoelbotn2<br>");
Page.Response.Write("LadireccinIPdelhostdelclientees:"+
Page.Request.UserHostAddress);
}

Obtenemos en la ejecucin:

Conceptos de
Web Forms
Como podemos observar, cuando se cargue la pgina (Page_Load), si es falso que la
pgina haya sido recargada (es decir, que es la primera vez que se carga), el texto de
Label1 ser la fecha y hora actual. Adems, comprobamos que si presionamos sobre alguno
de los botones, la pgina se refresca (se enva al servidor y se recibe), pero la fecha y la
hora siguen siendo las mismas.
2.3.

MTODOS DE LA CLASE PAGE

En este apartado ofrecemos una descripcin de algunos de los mtodos que nos ofrece la
clase Page:

FindControl: este mtodo realiza una bsqueda en la pgina de un control web, cuyo
nombre se le pasa como argumento y lo devuelve (si lo encuentra). El parmetro que
recibe es un objeto de la clase String que representa el nombre del control buscado y el
objeto devuelto corresponde a la clase Control.

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

ResolveUrl: mtodo que convierte una URL virtual que se le pasa como parmetro en
una URL absoluta.

3. WEB FORMS
Los Web Forms (formularios web) son una caracterstica de ASP.NET que ofrece un modelo
de programacin y nos va a permitir generar contenidos dinmicos de una forma ms
sencilla.
Los Web Forms sustituyen a los formularios HTML dentro del entorno de programacin de
ASP.NET. Es un Web Form el que va a generar el cdigo HTML correspondiente al formulario
que estamos diseando. Asimismo, permiten el tratamiento de los eventos del cliente con
cdigo ASP.NET, es decir, con cdigo que ser ejecutado en el servidor web.
Este modelo de programacin ofrece, entre otras, las siguientes ventajas:

Un modelo de programacin ms visual (en el entorno Visual Studio podemos


utilizar los distintos controles que nos suministra el Cuadro de Herramientas, y

10

Conceptos de
Web Forms
arrastrarlos y soltarlos hasta la vista Diseo). Se ahorra tiempo de desarrollo en crear
la interfaz de usuario y adems podemos reutilizar estos controles que encapsulan su
funcionalidad.

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


cdigo HTML. ASP.NET ofrece una mayor separacin entre la lgica de la aplicacin y la
presentacin de la misma.

Integra el tratamiento de eventos del cliente con el cdigo correspondiente en el


servidor.

Lleva a cabo el mantenimiento del estado del formulario de forma automtica


entre peticiones. Esto significa que, si seleccionamos una serie de valores en el Web
Form, al enviarlo, de forma automtica se van a mantener estos valores en el caso de
que se vuelva a recargar el formulario.

Por otra parte, para crear un formulario web nicamente debemos utilizar una etiqueta
<form>, al estilo de las etiquetas del lenguaje HTML e incluir la propiedad runat con el valor
server. Por ejemplo:
<body>
<formid="form1"runat="server"method="post"visible="True">
</form>
</body>

Adems

de

definir

las

propiedades

mediante

cdigo,

podemos

utilizar

la

ventana

Propiedades, pues en algunos casos es ms sencillo ya que aporta informacin sobre los
posibles valores que puede tomar una determinada propiedad:

11

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

4.

INTRODUCCIN A LOS CONTROLES DE SERVIDOR DE ASP.NET

Ya hemos estudiado algunos controles, en este captulo ampliaremos el conocimiento sobre


los mismos y expondremos algunos ejemplos.
Los controles de servidor ASP.NET son una serie de objetos de servidor que generarn el
correspondiente cdigo HTML para que el usuario pueda visualizarlos y utilizarlos en la
pgina cargada en su navegador. Los controles de servidor ASP.NET se identifican en una
pgina usando la propiedad runat=server. Estos controles se encargan de manejar los
eventos generados por el cliente (como la pulsacin de un botn, seleccin de una opcin en
un desplegable, etc.).
Cada control de servidor se corresponde con una clase determinada perteneciente a un
espacio de nombres especfico. Podemos realizar la siguiente clasificacin:

Controles HTML: representan controles puramente HTML. Son los que en este lenguaje
se definen para su uso en formularios. Desde el cuadro de herramientas de Visual
Studio podemos acceder a ellos y para insertarlos en nuestro formulario basta con
arrastrarlos y soltarlos. Es importante destacar que estos controles provienen del HTML
por lo que no se ejecutan en el servidor a no ser que incluyamos la propiedad
runat=server, convirtindose as en controles y no en simples etiquetas. Las etiquetas
HTML que proporciona Visual Studio son:

12

Conceptos de
Web Forms

Controles Web: son otros componentes que ASP.NET trae preconfigurados y que,
aunque algunos son parecidos a los controles HTML, implementan caractersticas y
capacidades ms complejas.

Controles de validacin: son controles con los que podremos comprobar que la
informacin introducida por el usuario es vlida.

Controles de usuario: se trata de controles compuestos que funcionan de forma


similar a las pginas web de ASP.NET.

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

GridLayout: permite un posicionamiento dinmico de los elementos mediante


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

13

Conceptos de
Web Forms

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


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

Veremos ms adelante algunos ejemplos de uso.

5. INTRODUCCIN A LOS CONTROLES HTML


La sintaxis que ofrecen los controles HTML de servidor es muy similar a la de los controles (o
etiquetas) clsicos del lenguaje HTML. Estos controles ofrecen la potencia de los Web Forms
y mantienen la familiaridad y facilidad de uso de las etiquetas HTML que representan los
campos de un formulario.
Estos controles tienen el mismo aspecto que una etiqueta HTML, a excepcin de que
presentan el atributo runat con el valor server. Otra diferencia es que posee un atributo
especial para el tratamiento de eventos del cliente con cdigo del servidor.
Para realizar el tratamiento de eventos de estos controles con cdigo de servidor,
utilizaremos el atributo onserverevento_del_control. A este atributo se le indica como
valor el nombre del mtodo que queremos ejecutar.
Por otra parte, para identificar de forma nica un control ASP.NET, debemos utilizar la
propiedad id. Mediante este identificador podemos hacer referencia al objeto correspondiente
en la pgina y as utilizar el cdigo de servidor para acceder a sus mtodos o manipular sus
propiedades. Cada control del formulario es un objeto (objetos de la pgina ASP.NET), es
decir, una instancia de una clase determinada y, por tanto, cada uno de ellos poseer sus
propiedades y mtodos.
As, la sintaxis general de un control HTML es:

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

Los controles HTML estn disponibles para mantener la compatibilidad con versiones
anteriores de ASP, de manera que, si queremos que una etiqueta HTML pase a ser un control
HTML, simplemente debemos indicar la propiedad runat con el valor server. Normalmente,
son ms utilizados los controles web.

14

Conceptos de
Web Forms
A continuacin, vamos a ver una descripcin de las distintas clases que se corresponden con
los

controles

HTML.

Estas

clases

se

encuentran

dentro

del

espacio

de

nombres

System.Web.UI.HtmlControls y ofrecen al desarrollador el acceso en el servidor a las


distintas etiquetas HTML que finalmente se enviarn al cliente web como resultado de la
ejecucin de la pgina ASP.NET correspondiente.
La lista de los controles HTML que vienen predefinidos en el sistema ASP.NET son los
siguientes:

HTMLAnchor: representa a la etiqueta <a>, es decir, es el control HTML que nos


permite manejar enlaces.

HTMLForm: representa a la etiqueta <form> de HTML. Esta clase permite definir un


Web Form, que va a realizar la labor de contenedor para los controles de servidor dentro
de la pgina, es decir, todos los controles que deseemos enviar al servidor (mtodo
post) debemos incluirlos dentro de un control de la clase HtmlForm.

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

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


imgenes.

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

HTMLInputCheckBox: se refiere al elemento <input type=checkbox>, que es una


casilla de verificacin de HTML.

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


ficheros desde el cliente al servidor.

HTMLInputHidden: se refiere al elemento <input type=hidden>, que es un control


invisible para almacenar valores alfanumricos.

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


que presenta una funcionalidad de envo de un formulario HTML.

15

Conceptos de
Web Forms

HTMLInputRadioButton: representa al elemento <input type=radio>, que es una


casilla de opcin de HTML.

HTMLInputText:

describe

los

elementos

<input

type=text>

<input

type=password>, que son cajas de texto y contrasea de un formulario HTML.

HTMLSelect: se refiere al elemento <select> que es un desplegable de un formulario


HTML.

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

HTMLTableRow: es el control HTML que permite manipular una fila de una tabla.

HTMLTableCell: esta clase permite el acceso a las celdas de una tabla, es decir, se
corresponde con las etiquetas <td> y <th>.

HTMLTextArea: este control permite manipular en el servidor la etiqueta <textarea>,


que es una caja de texto de gran capacidad en un formulario HTML.

Paleta de controles HTML en Visual Studio .NET

16

Conceptos de
Web Forms
5.1.

EJEMPLOS CON CONTROLES HTML

Ejemplo 1:
ejemplosControles1.aspx

<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="ejemplosControles1.aspx.cs"
Inherits="ejemplosControles1"%>

<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headid="Head1"runat="server">
<title>EjemplodeusodecontrolesHTMLenunapginaASP.NET</title>
</head>

<body>
<formid="formulario"runat="server"method="post">
<selectid="lista"runat="server">
<optionselected>Azul</option>
<option>Rojo</option>
<option>Verde</option>
<option>Blanco</option>
</select>
<inputtype="button"id="boton"runat="server"
value="Seleccioneuncolor"onserverclick="cambia">
<divid="etiqueta"runat="server"></div>
</form>
</body>
</html>

ejemplosControles1.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;

publicpartialclassejemplosControles1:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{

17

Conceptos de
Web Forms
}
protectedvoidcambia(Objectorigen,EventArgsargs)
{
etiqueta.InnerText=lista.Value;
}
}

Si no se hubiese transformado la lista en control HTML, con el atributo runat=server, desde


el cdigo en el mtodo cambia del fichero ejemplosControles.aspx.cs, no se hubiese
podido acceder al valor lista.Value, generndose un error en tiempo de compilacin.
El resultado obtenido es:

Resultado de ejecutar ejemploControles.aspx en el navegador

Este ejemplo muestra una lista desplegable con una serie de nombres de colores y un botn.
Al pulsar el botn, se muestra el elemento seleccionado de la lista en un texto de un
elemento <div>.
Hemos accedido a las propiedades de los controles a travs del nombre con el que los hemos
declarado (el valor del atributo id, que permite tener acceso a las propiedades y mtodos de
cada control del formulario). Asimismo, accedemos a la propiedad innerText de la etiqueta
para asignarle el valor obtenido de la lista desplegable.
Si hacemos distintas llamadas al formulario, podremos observar que se mantiene el estado
del mismo, es decir, en el combo se mantiene el elemento seleccionado sin que tengamos
que escribir ningn cdigo adicional para controlarlo. Esto es posible gracias a que el Web
Form genera un campo oculto (ViewState) que conserva los valores de los campos del
formulario y mantiene el estado de los controles para su restauracin en cada carga de la
pgina.

18

Conceptos de
Web Forms
Ejemplo 2:

ejemploControles2.aspx

<%@PageLanguage="C#"AutoEventWireup="true"
CodeFile="ejemploControles2.aspx.cs"Inherits="ejemploControles2"%>

<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>EjemplodeusodecontrolesHTMLenunapginaASP.NET</title>
</head>
<bodyid="cuerpo"runat="server">
<formid="formulario"runat="server"method="post">
<selectid="lista"runat="server">
<optionvalue="blue"selected>Azul</option>
<optionvalue="red">Rojo</option>
<optionvalue="green">Verde</option>
<optionvalue="white">Blanco</option>
<optionvalue="yellow">Amarillo</option>
</select>
<inputtype="button"id="boton"runat="server"
value="Seleccioneuncolor"onserverclick="cambia">
</form>
</body>
</html>

ejemploControles2.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;

publicpartialclassejemploControles2:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{

19

Conceptos de
Web Forms
protectedvoidcambia(Objectorigen,EventArgsargs)
{
cuerpo.Style["backgroundcolor"]=lista.Value;
}
}

En este ejemplo utilizamos un control HTML de la clase HtmlGenericControl y dos objetos de


las clases HtmllnputButton y HtmlSelect, que se corresponden con el botn y la lista
desplegable del formulario. Al seleccionar un elemento de la lista (un color) y pulsar el
botn, se mostrar el documento HTML con el color de fondo seleccionado en el combo.
Adems, podemos ver cmo aplicar estilos a los controles ASP.NET. Para ello, usamos la
propiedad Style del control, que funciona como una coleccin permitiendo acceder a las
distintas propiedades del control que representan los atributos de las hojas de estilo. En este
caso se manipula la propiedad background-color, para establecer el color de fondo de la
pgina actual.

Resultado de ejecutar ejemploControles2.aspx en el navegador

Ejemplo 3:
EjemploControles3.aspx

<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="ejemploControles3.aspx.cs"
Inherits="ejemploControles3"%>

<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>EjemplodeusodecontrolesHTMLenunapginaASP.NET</title>
</head>
<body>
<formid="form1"runat="server">

20

Conceptos de
Web Forms
<selectid="lista"runat="server">
<option>imagen1</option>
<option>imagen2</option>
</select>
<inputtype="button"id="boton"runat="server"value="Cambia"
onserverclick="cambiaImagen">
<br/>
<imgsrc="imagen1.jpg"runat="server"id="imagen">
</form>
</body>
</html>

EjemploControles3.aspx.cs

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;

publicpartialclassejemploControles3:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{

}
protectedvoidcambiaImagen(Objectorigen,EventArgsargs)
{
imagen.Src=lista.Value+".jpg";
}
}

21

Conceptos de
Web Forms
Por otra parte, insertar las imgenes de nuestro ejemplo se puede hacer de manera muy
sencilla desde Visual Studio, ya que tan solo hemos de pulsar con el botn derecho en el
proyecto y hacer la siguiente seleccin en el Explorador de soluciones:

De esta forma, se abre el Explorador de Windows y procedemos a copiar dos imgenes


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

Resultado de ejecutar EjemploControles3.aspx en el navegador

22

Conceptos de
Web Forms
6.

INTRODUCCIN A LOS CONTROLES WEB

Estos controles cumplen la misma funcionalidad que los anteriores pero su sintaxis es
distinta, ya que est basada en XML y, adems, no existe una correspondencia directa entre
los controles y las etiquetas HTML que se generan (como suceda con los controles HTML).
Estos controles pertenecen al espacio de nombres System.Web.UI.WebControls. Adems,
ofrecen un nivel de abstraccin mayor que los anteriores y su modelo de objetos no refleja la
sintaxis HTML necesariamente, pues cuando la pgina se carga en el navegador, el control
web determina el navegador que ha realizado la peticin y, de acuerdo con esta informacin,
genera el cdigo HTML apropiado y especfico para ese navegador web.
La sintaxis general de un control web es:

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


//cuerpo
</asp:nombreControl>

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

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

Adems de la diferencia de sintaxis entre los controles HTML y controles web, existen
otras:

Algunos nombres de propiedades cambian. Por ejemplo, el control HTML button


posee la propiedad value y el control web equivalente posee la propiedad text para
mostrar el texto del botn.

La propiedad para lanzar el evento de pulsacin de botn es diferente, ya que


onserverclick es usada en los controles HTML, mientras que en los controles web
utilizamos OnClick.

En los controles HTML se debe distinguir entre evento de cliente y de servidor (para
tratar este ltimo en el servidor como hemos visto, o en el cliente mediante lenguajes
de Script, por ejemplo, JavaScript). Sin embargo, desde los controles web solo tenemos
la posibilidad de utilizar eventos de servidor, es decir, eventos que son tratados por
rutinas que se ejecutan en el servidor.

23

Conceptos de
Web Forms
Por otra parte, al igual que ocurra con los controles HTML, para permitir hacer referencia a
los controles dentro del cdigo fuente de la pgina, debemos utilizar el atributo id. De esta
forma, podemos utilizar el objeto que se corresponde con el control de servidor para utilizar
sus mtodos o manipular sus propiedades.
A continuacin, vamos a describir brevemente los principales controles web que vienen
predefinidos en el sistema ASP.NET1:

Button: se refiere a un botn. Se corresponde con la etiqueta <input type=submit>,


es decir, un botn que enva el contenido de un formulario al servidor. Para tratar el
evento de pulsacin del botn, utilizamos la propiedad OnClick de la clase Button.

CheckBox: describe una casilla de verificacin. Se corresponde con la etiqueta <input


type=checkbox>. El evento que se lanza al pulsar sobre un CheckBox es el evento
CheckedChanged.

Para

utilizar

checkbox

mltiples

podemos

usar

el

control

CheckBoxList.

CheckBoxList: permite utilizar una lista de seleccin mltiple de elementos Checkbox.


Este objeto posee una coleccin Items que contiene todos los objetos CheckBox.

DropDownList: este control representa una lista desplegable y se corresponde con la


etiqueta <select> de HTML.

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


generar en el cliente una etiqueta <a>.

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

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

Label: se refiere a una etiqueta de texto. Generar como resultado de su ejecucin una
etiqueta <span> de HTML.

Para una referencia completa de todos ellos, debemos consultar la referencia tcnica de Microsoft.

24

Conceptos de
Web Forms

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

ListBox: se refiere a un cuadro de lista. Es similar al control DropDownList, pero en


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

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

RadioButton: representa un botn de opcin que se corresponde con el elemento


<input type=radio> de HTML. Permite elegir entre un grupo de opciones. Dichas
opciones se agrupan mediante la propiedad GroupName.

RadioButtonList: este control representa una lista de seleccin mltiple de elementos


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

Style: caracteriza al estilo (CSS) de un control de servidor, es decir, podemos usar


estilos para mejorar y personalizar el aspecto de los controles.

Table, TableRow y TableCell: estn muy relacionados entre s. Mediante la utilizacin


de todos ellos podemos generar tablas en HTML.

El control Table representa una tabla (etiqueta <table> de HTML). Esta clase posee
una coleccin llamada Rows, que contiene objetos de la clase TableRow y que
representan las filas de la tabla.

El objeto TableRow tiene una coleccin llamada Cells, que contiene las columnas
para esa fila de la tabla.

25

Conceptos de
Web Forms

El control TableCell representa una celda en un control. Se puede utilizar la


propiedad Text para especificar el contenido de la celda. Se usa en conjuncin con
los controles Table y TableRow.

TextBox: representa una caja de texto.

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

6.1.

EJEMPLOS CON CONTROLES WEB

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

ejemploControles4.aspx

<%@PageLanguage="C#"AutoEventWireup="true"
CodeFile="ejemploControles4.aspx.cs"Inherits="ejemploControles4"%>

<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>EjemplodeusodecontrolesWebenunapginaASP.NET</title>
</head>
<body>
<formid="formulario"

runat="server"method="post">

<asp:ListBoxid="lista"runat="server">

<asp:ListItemselected>VisualC#</asp:ListItem>

<asp:ListItem>VisualBasic</asp:ListItem>

<asp:ListItem>Java</asp:ListItem>

<asp:ListItem>PHP</asp:ListItem>

</asp:ListBox>

<asp:Buttonid="boton"runat="server"Text="Seleccioneunlenguaje"
OnClick="cambia"/><br>
<asp:Labelid="etiqueta"runat="server"/>
</form>
</body>
</html>

26

Conceptos de
Web Forms
ejemploControles4.aspx.cs

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;

publicpartialclassejemploControles4:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidcambia(Objectorigen,EventArgsargs)
{
etiqueta.Text="Haseleccionado"+lista.SelectedItem.Text;
}
}

Resultado de ejecutar ejemploControles4.aspx en el navegador.

Ejemplo 5: se muestra la fecha y hora actuales en un objeto de la clase Label al capturar el


evento de pulsacin del botn.

ejemploControles5.aspx

<%@PageLanguage="C#"AutoEventWireup="true"
CodeFile="ejemploControles5.aspx.cs"Inherits="ejemploControles5"%>

<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">

27

Conceptos de
Web Forms

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>EjemplodeusodecontrolesWebenunapginaASP.NET</title>
</head>
<body>
<formid="formulario"

runat="server"method="post">

<asp:Buttonid="boton"runat="server"Text="Obtenerfecha"
OnClick="obtenerFecha"/><br>
<asp:Labelid="etiqueta"runat="server"/>
</form>
</body>
</html>

ejemploControles5.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;

publicpartialclassejemploControles5:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{

}
protectedvoidobtenerFecha(Objectorigen,EventArgsargs)
{
DateTimeahora;
ahora=DateTime.Now;
etiqueta.Text="Fecha/Horaactuales:"+ahora.ToString();
}

28

Conceptos de
Web Forms

Resultado de ejecutar ejemploControles5.aspx en el navegador.

Ejemplo 6: en ese caso, al pulsar el botn se comprueba si el objeto de la clase Checkbox


se encuentra marcado o no y se muestra un mensaje indicndolo en un objeto de la clase
Label.
ejemploControles6.aspx

<%@PageLanguage="C#"AutoEventWireup="true"
CodeFile="ejemploControles6.aspx.cs"Inherits="ejemploControles6"%>

<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title></title>
</head>
<body>
<formid="formulario"

runat="server"method="post">

<asp:CheckBoxid="casilla"runat="server"
Text="Casilladeverificacin"/><br>
<asp:Buttonid="boton"runat="server"
Text="Comprobar"OnClick="compruebaCasilla"/><br>
<asp:Labelid="etiqueta"runat="server"/>
</form>
</body>
</html>

29

Conceptos de
Web Forms
ejemploControles6.aspx.cs

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;

publicpartialclassejemploControles6:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{

}
protectedvoidcompruebaCasilla(Objectorigen,EventArgsargs)
{
if(casilla.Checked==true)
{
etiqueta.Text="Lacasilladeverificacinestmarcada";
}
else
{
etiqueta.Text="Lacasilladeverificacinnoestmarcada";
}
}
}

Resultado de ejecutar ejemploControles6.aspx en el navegador.

30

Conceptos de
Web Forms
Ejemplo 7: podemos aplicar un estilo a un control web a travs de la propiedad CssClass.
Para ello, a esta propiedad le asignaremos el nombre de la clase que define el estilo que se
desea aplicar al control.
ejemploControles7.aspx
<%@PageLanguage="C#"AutoEventWireup="true"
CodeFile="ejemploControles7.aspx.cs"Inherits="ejemploControles7"%>

<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>EjemplodeusodecontrolesWebenunapginaASP.NET</title>
<style>.estilo{font:14pxverdana;color:white;background
color:#CCCCCC}</style>
</head>

<body>
<asp:Labelid="etiqueta"runat="server"CssClass="estilo">
EjemplodeaplicacindeestilossobreuncontrolWeb
Label</asp:Label>
</body>
</html>

Resultado de ejecutar Ejemplo7.aspx en el navegador.

31

Conceptos de
Web Forms
Ejemplo 8: aqu vamos a aplicar estilos a un control.
ejemploControles8.aspx
<%@PageLanguage="C#"AutoEventWireup="true"
CodeFile="ejemploControles8.aspx.cs"Inherits="ejemploControles8"%>

<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>EjemplodeusodecontrolesWebenunapginaASP.NET</title>
</head>
<body>
<formid="form1"runat="server">
<asp:Labelid="etiqueta"runat="server"CssClass="estilo">
EjemplodeaplicacindeestilossobreuncontrolWeb</asp:Label>
</form>
</body>
</html>

ejemploControles8.aspx.cs

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;

publicpartialclassejemploControles8:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{

Styleestilo=newStyle();
estilo.BorderColor=Color.Green;
estilo.BorderStyle=BorderStyle.Dashed;
estilo.ForeColor=Color.Blue;
estilo.BackColor=Color.Pink;
estilo.Font.Name="Courier";
estilo.Font.Size=16;
estilo.Font.Italic=true;
etiqueta.ApplyStyle(estilo);

32

Conceptos de
Web Forms
La forma de aplicar un estilo a un control web es a travs del mtodo ApplyStyle. Este
mtodo recibe como parmetro un objeto de la clase Style (cuyas propiedades contienen los
valores del estilo) y lo aplica al control: etiqueta.ApplyStyle(estilo);.
En este ejemplo hemos importado el espacio de nombres System.Drawing, para tener acceso
a las clases Color y BorderStyle y no tener que referenciar toda la ruta: estilo.BackColor=
System.Drawing.Color.Pink;

Resultado de ejecutar ejemplo8.aspx en el navegador.

Ejemplo 9: en esta prctica podemos observar el uso de un control DropDownList y un


control Image. Este control Image mostrar la imagen que seleccionemos del DropDownList.
Capturamos el evento OnSelectedIndexChanged de DropDownList para realizarlo. Este
evento se produce cada vez que se modifica la seleccin de un elemento en la lista. La
propiedad AutoPostBack del objeto DropDownList tiene el valor true.
ejemploControles9.aspx
<%@PageLanguage="C#"AutoEventWireup="true"
CodeFile="ejemploControles9.aspx.cs"Inherits="ejemploControles9"%>

<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>EjemplodeusodecontrolesWebenunapginaASP.NET</title>
</head>
<body>
<formid="formulario"

runat="server"method="post">

<asp:DropDownListAutoPostBack="True"id="lista"
OnSelectedIndexChanged="cambiaImagen"runat="server">

33

Conceptos de
Web Forms

<asp:ListItemvalue="imagen1.jpg">imagen1</asp:ListItem>

<asp:ListItemvalue="imagen2.jpg">imagen2</asp:ListItem>

</asp:DropDownList>

<br/>
<asp:Imageid="imagen"runat="server"ImageUrl=""
AlternateText="Listaimgenes"/>
</form>

</body>
</html>

ejemploControles9.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Drawing;

publicpartialclassejemploControles9:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{

}
protectedvoidcambiaImagen(Objectorigen,EventArgsargs)
{
imagen.ImageUrl=lista.SelectedItem.Value;
imagen.AlternateText=lista.SelectedItem.Text;
}
}

La primera carga de la pgina web no muestra imagen, tal y como se ha indicado en el


cdigo, tan solo muestra el texto alternativo Lista Imgenes. Al seleccionar una del listado
ya aparecer correctamente.

34

Conceptos de
Web Forms

Resultado de ejecutar Ejemplo9.aspx en el navegador.

7.

DIRECTIVAS DE PGINA

Una directiva es un identificador que incluimos en una pgina ASP.NET y que informa al
entorno de ejecucin de ciertas caractersticas clave de dicha pgina, como el lenguaje en el
que est programada o las libreras que se importarn. Es decir, mediante una directiva
podemos declarar una serie de atributos de la pgina ASP.NET actual, que tendr
repercusin a la hora de crearla.
Estas directivas de pgina tienen el siguiente formato:

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

Lo primero que escribimos es el nombre de la directiva, seguida de una serie de pares


atributo-valor que definen los datos relativos a cada una de las directivas. Dichos pares
van separados por el carcter espacio y el valor va entrecomillado.

35

Conceptos de
Web Forms
Por otra parte, podemos situar estas directivas en cualquier lugar de la pgina. No obstante,
por convencin, se suelen situar al principio del cdigo. Cada directiva comienza con el
identificador <%@ y termina con %>.
En los siguientes apartados vamos a estudiar las directivas disponibles en ASP.NET.
7.1.

LA DIRECTIVA @PAGE

Esta directiva es la ms utilizada y la que mayor nmero de atributos tiene. Define los
atributos especficos de pgina, es decir, el archivo .aspx, que utilizan el analizador y el
compilador de pginas de ASP.NET. En cada pgina nicamente puede existir una.
Los valores principales que puede llevar esta directiva son los siguientes:

AutoEventWireup. Indica si los eventos de la pgina (UnLoad, Load, Init, etc.) se van
a lanzar de forma automtica.

Valores: true o false.

Valor por defecto: false.

Buffer. Se utiliza para activar o desactivar el bfer de la pgina ASP.NET actual.

Valores: true o false.

Valor por defecto: false.

ClassName. Contiene un valor de cadena que indica el nombre de la clase de la pgina


actual.

Valores: cualquier nombre de clase vlido.

Valor por defecto: se basar el nombre de archivo de la pgina.

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

EnableSessionState. Este atributo informa al sistema si esta pgina tendr acceso al


sistema de gestin y mantenimiento de sesiones, es decir, si se permite o no la
utilizacin de la propiedad Session de la clase Page.

36

Conceptos de
Web Forms
El valor ReadOnly indica que la pgina nicamente podr leer variables de sesin, pero
no modificarlas ni crear variables nuevas.

Valores: true, false o ReadOnly.

Valor por defecto: true.

EnableViewState. Esta propiedad permite activar o desactivar el mantenimiento


automtico de los valores de los controles web dentro de un formulario (ViewState).

Valores: true o false.

Valor por defecto: true.

ErrorPage. Este atributo contiene la pgina de error que se va a utilizar en el caso de


que se produzca una excepcin no tratada en la ejecucin de la pgina.

Valores: URL de la pgina de error.

CodeFile: este atributo se utiliza junto con el atributo Inherits para asociar un archivo
de cdigo fuente subyacente a una pgina web. Este atributo solo es vlido para las
pginas compiladas.

Valores: nombre del archivo de cdigo fuente.

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

Valores: nombre de clase.

Language: define el lenguaje en que est programada la pgina actual, siendo este al
que se compilar todo el cdigo fuente de la pgina. Se puede utilizar y especificar un
solo lenguaje por pgina.

Valores: vb, c# e identificadores de lenguajes compatibles con Microsoft .NET true


o false.

Valor por defecto: vb.

37

Conceptos de
Web Forms

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

WarningLevel: define el nivel de advertencia que queremos utilizar al compilar


nuestras pginas. Cuanto mayor nivel especifiquemos, ms estricto ser el compilador a
la hora de informar sobre potenciales fallos de sintaxis o funcionamiento de nuestro
cdigo fuente.

Valores: de 0 a 4.

Ejemplo de uso de esta directiva:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EjemploDatos1.aspx.cs"


Inherits="_Default" %>

En este caso, hemos indicado que el lenguaje utilizado en el cdigo fuente de la pgina es
C#, que los eventos de la pgina (Init, Load, PreRender y Unload.) se van a lanzar de forma
automtica, que el nombre del archivo de cdigo fuente es EjemploDatos1.aspx.cs y que la
pgina actual hereda de la clase _Default.
7.2.

LA DIRECTIVA @IMPORT

Esta directiva la emplearemos para importar de forma explcita un espacio de nombres


(namespace) determinado y conseguir con ello tener acceso a todas las clases definidas en
l. Este espacio de nombres puede ser propio de la plataforma .NET Framework, o bien un
espacio de nombres definido por nosotros.
nicamente podemos indicar un espacio de nombres por directiva Import, por lo que si
queremos importar ms de un espacio de nombres, deberemos utilizar una directiva Import
por cada uno.
Su sintaxis es:

<%@ Import NameSpace="valor" %>

38

Conceptos de
Web Forms
Por otra parte, el sistema importa automticamente una serie de espacios de nombres para
las pginas ASP.NET, por lo que no tenemos que importarlas de forma explcita con la
directiva Import, tendremos acceso a todas sus clases:

System

System.Collections

System.Collections.Specialized

System.Configuration

System.IO

System.Text

System.Text.RegularExpressions

System.Web

System.Web.Caching

System.Web.Security

System.Web.SessionState

System.Web.UI

System.Web.UI.HtmlControls

System.Web.UI.WebControls

7.3.

LA DIRECTIVA @IMPLEMENTS

Esta directiva indica que el archivo actual implementa una interfaz determinada, es decir, da
contenido a sus mtodos, propiedades y eventos.
Si deseamos implementar varios interfaces en la pgina, debemos utilizar varias directivas
Implements, una por cada interfaz.
Su sintaxis es:

<%@ Implements Interface="nombreInterfaz" %>

8.

FICHEROS GLOBAL.ASAX Y WEB.CONFIG

En este apartado se estudian los dos ficheros de configuracin ms importantes de una


aplicacin web ASP.NET. Por este motivo, le dedicaremos a cada uno un apartado especfico.

39

Conceptos de
Web Forms
8.1.

EL FICHERO GLOBAL.ASAX

En el sistema ASP.NET disponemos de un mecanismo, representado por el fichero


GLOBAL.ASAX, utilizado para insertar en l cdigo a ejecutar al capturar eventos de la
aplicacin. Este fichero es opcional y est situado en el directorio raz de nuestro servidor
web o de nuestro directorio virtual. Genera una clase .NET derivada de la clase
HttpApplication al iniciarse nuestra aplicacin web.
En l se sigue un formato similar al de las pginas ASP.NET:

<%@ Application Language="C#" %>


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

Para agregarlo a nuestro proyecto, pulsamos con el botn derecho del ratn encima del
nombre del proyecto en la ventana del Explorador de Soluciones. Seguidamente, hacemos
clic en Agregar Nuevo Elemento... Por ltimo, en la ventana seleccionamos el elemento
Clase de aplicacin global. Podemos verlo en la siguiente imagen:

40

Conceptos de
Web Forms
Al crear este fichero por defecto ya vienen definidos ciertos eventos comunes con su
correspondiente explicacin:

<%@ApplicationLanguage="C#"%>

<scriptrunat="server">

voidApplication_Start(objectsender,EventArgse)
{
//Cdigoqueseejecutaaliniciarselaaplicacin

voidApplication_End(objectsender,EventArgse)
{
//Cdigoqueseejecutacuandosecierralaaplicacin

voidApplication_Error(objectsender,EventArgse)
{
//Cdigoqueseejecutaalproducirseunerrornocontrolado

voidSession_Start(objectsender,EventArgse)
{
//Cdigoqueseejecutacuandoseiniciaunanuevasesin

voidSession_End(objectsender,EventArgse)
{
//Cdigoqueseejecutacuandofinalizaunasesin.
//Nota:EleventoSession_Endsedesencadenasoloconelmodosessionstate
//seestablececomoInProcenelarchivoWeb.config.Sielmododesesinseestablece
comoStateServer
//oSQLServer,eleventonosegenera.

</script>

41

Conceptos de
Web Forms
8.1.1. Eventos de servidor
Los principales eventos que podemos tratar en el fichero GLOBAL.ASAX son:

Application_Start: este evento se lanza cuando se inicia la ejecucin de la aplicacin


ASP.NET correspondiente y tiene lugar cuando el primer usuario carga una pgina
ASP.NET perteneciente a la aplicacin. Dentro de este evento indicaremos el cdigo de
inicializacin de la aplicacin.

Application_End: es el evento contrario al anterior. Se lanza cuando finaliza la


ejecucin de la aplicacin ASP.NET. Esta finalizacin de la ejecucin puede ocurrir por
varios motivos: cuando termina la ltima de las sesiones de un usuario con la
aplicacin, se apaga el servidor web o se modifica el cdigo fuente del fichero
GLOBAL.ASAX (porque ello fuerza una compilacin del fichero).
Dentro de este evento colocaremos el cdigo de limpieza de la aplicacin (como liberar
los recursos utilizados) o que deba ejecutarse al finalizar nuestra aplicacin.

Session_Start: este evento se lanza cuando se inicia una nueva sesin de un usuario
dentro de una aplicacin ASP.NET. El inicio de sesin se produce para cada usuario
cuando solicita la primera pgina de la aplicacin.
Puede usarse para inicializar las variables de sesin para el usuario, tales como
identificacin, preferencias, etc. Estos valores permanecern disponibles mientras su
sesin permanezca activa. Para que se produzca este evento, se debe haber lanzado
previamente el evento Application_Start.

Session_End: es el evento contrario al evento Session_Start. Se lanza cuando finaliza


una sesin de usuario. Este hecho puede producirse porque haya caducado la sesin al
permanecer inactiva el tiempo indicado en su propiedad Timeout, o bien porque se ha
forzado

mediante

una

llamada

al

mtodo

Abandon()

de

la

clase

System.Web.SessionState.HttpSessionState (clase que representa la sesin de un


usuario en la aplicacin ASP.NET). Si finaliza la ejecucin de la aplicacin, se ejecutarn
todos los eventos Session_End de cada sesin de usuario antes de lanzarse el evento
Application_End.

Application_Error: se produce cuando ocurre un error no controlado. De esta forma,


se puede capturar y mostrar mensajes de error ms adecuados que los que estn por
defecto.

42

Conceptos de
Web Forms

Application_Disposed: este evento es lanzado cuando la aplicacin ASP.NET inicia su


descarga de memoria y se producir antes del evento Application_End.

Los eventos Application_Start, Application_Disposed y Application_End se lanzan una nica


vez durante toda la vida de la aplicacin ASP.NET, mientras que los eventos Session_Start y
Session_End se ejecutarn repetidas veces, dependiendo de las sesiones que hayan iniciado
los usuarios con la aplicacin ASP.NET.
El esquema siguiente muestra el orden en que se producen los eventos que hemos visto y la
circunstancia que provoca el lanzamiento de cada evento:

El primer usuario se conecta y solicita una


Application_Start

Session_Start

Session_End

pgina de la aplicacin.

Un usuario inicia la aplicacin.

La sesin caduca.

Termina la ltima sesin con la aplicacin.


Application_Disposed

Finaliza el servidor web.


Se modifica el fichero GLOBAL.ASAX.

Application_End

43

Conceptos de
Web Forms
8.2.

EL FICHERO WEB.CONFIG

La configuracin de las aplicaciones ASP.NET se basa en ficheros XML, es decir, se utilizan


ficheros XML de configuracin. Este sistema presenta las siguientes ventajas:

Valores de configuracin en formato reconocible. Podemos abrir el fichero XML y


leer y modificar los valores de configuracin que contiene.

Actualizaciones inmediatas. Los cambios en los ficheros de configuracin se toman


de forma inmediata y automtica en el sistema sin necesidad de reiniciar el servidor web
o para los servicios.

Portabilidad de las configuraciones. Para tener una aplicacin ASP.NET en un


servidor con la misma configuracin que otra aplicacin distinta, nicamente es
necesario copiar los ficheros XML de configuracin a la aplicacin correspondiente.

Bloqueo

de

valores

de

configuracin.

Es

posible

bloquear

los

valores

de

configuracin que no deban ser sobrescritos.


Existen dos tipos de ficheros de configuracin:

Configuracin del servidor. Esta configuracin se almacena en un fichero denominado


Machine.config, que se encuentra en el directorio:

Windows\Microsoft.NET\Framework\[versin]\config

Por ejemplo:
Para sistemas de 32 bits: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config o
sistemas de 64 bits: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config
Este fichero representa la configuracin por defecto de todas las aplicaciones ASP.NET
existentes en el servidor.

Configuracin de la aplicacin. La informacin de configuracin relativa y especfica a


una aplicacin ASP.NET se encuentra en el fichero Web.config de su directorio raz.
Puede haber otros ficheros Web.config dentro de una misma aplicacin, en otros
directorios ms anidados.

44

Conceptos de
Web Forms
La configuracin del fichero Web.config sobrescribe los valores especificados en el
fichero Machine.config y, a su vez, cada fichero Web.config sobrescribir los valores de
configuracin utilizados en los ficheros Web.config de directorios superiores (a no ser
que dichos valores se hayan bloqueado para evitar ser sobrescritos). De esta forma, los
valores ms globales son sobrescritos por valores ms especficos de configuracin.
El proceso de preferencias en la jerarqua queda por tanto:
1.

Configuraciones de Machine.config.

2.

Configuraciones

de

Web.config

global,

se

adjuntan

las

del

anterior

sobrescribiendo las coincidentes.


3.

Si en la carpeta raz de nuestra aplicacin hay un Web.config, se lee, se adjunta a


los anteriores sobrescribiendo los coincidentes.

4.

Pueden existir Web.config en subcarpetas de la propia aplicacin, por tanto, se irn


mezclando y sobreescribiendo los existentes para cada subcarpeta anidada.

8.3.

FORMATO DE LOS FICHEROS DE CONFIGURACIN

Los dos ficheros de configuracin para una aplicacin ASP.NET, Machine.config y Web.config,
se diferencian nicamente en el nombre (adems de su localizacin como hemos visto), ya
que internamente presentan el mismo formato XML.
Debemos tener en cuenta que el sistema de configuracin de ASP.NET distingue entre
maysculas y minsculas.
Cada fichero de configuracin contiene una jerarqua anidada de etiquetas y subetiquetas
XML con atributos que especifican los valores de configuracin. Las etiquetas deben
encontrarse bien construidas y siguen el siguiente criterio:

Los nombres de etiquetas y atributos comienzan con letra minscula y la primera letra
de cada una de las siguientes palabras que forman el nombre va en mayscula.

Los valores de los atributos de las etiquetas comienzan siempre por mayscula y la
primera letra de cada una de las siguientes palabras que la formen va tambin en
mayscula. Existe una excepcin, los valores true y false se escriben con todas las letras
en minsculas.

45

Conceptos de
Web Forms
Dentro de los ficheros de configuracin, el elemento raz es siempre la etiqueta
<configuration>. Dentro de este elemento, entre sus etiquetas de comienzo y fin,
aparecern las distintas secciones de configuracin para aplicar a la aplicacin ASP.NET.

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

-->

</configuration>

Un fichero Web.config bsico creado por Visual Studio para la depuracin es:

9.

EJEMPLO DE MANEJADOR HTTP

Los mdulos HTTP son los responsables de filtrar cada solicitud/respuesta en una aplicacin
ASP.NET. Son elementos del servidor web IIS que, al recibir una peticin hacia un recurso de
la aplicacin, por ejemplo, una pgina .aspx, responden a dicha peticin. Por ejemplo, si
como se ha comentado, se solicita una pgina .aspx, el manejador (handler) especial de este
tipo de pginas crea el entorno para su ejecucin, interpreta y devuelve el resultado.
Estos manejadores, por defecto, vienen implementados y no es necesario modificarlos a no
ser que deseemos realizar alguna configuracin especial adaptada a nuestras necesidades.
Un ejemplo de uso podra ser:

Mapear direcciones: queremos cambiar la direccin de peticiones para ocultar la direccin correcta
del archivo, en la url del navegador se escribe http://midominio,com/listadeproductos.lst. Este archivo
como tal no existe y el manejador, al interceptar la peticin, hace una consulta en una base de datos
y responde adecuadamente.

46

Conceptos de
Web Forms
Los manejadores se crean en Visual Studio agregando un nuevo elemento y eligiendo la
plantilla adecuada como se ve en la siguiente imagen:

La plantilla de este manejador por defecto es:

En esta plantilla ya nos da construida la clase (Handler.ashx) que implementa la lgica del
manejador y la interfaz IHttpHandler. Esta interfaz contiene el mtodo ProcessRequest()
que ser el mtodo responsable de procesar la solicitud que se ha asociado con el
manejador.

47

Conceptos de
Web Forms
Tambin es necesario implementar la propiedad IsReusable, de solo lectura, y que
simplemente devuelve el valor true.
En este ejemplo, el mtodo ProcessRequest() generar cdigo HTML sencillo, que presentar
una cadena de texto con un saludo.
<%@WebHandlerLanguage="C#"Class="miManejador"%>

usingSystem;
usingSystem.Web;
namespaceComponentes.Pruebas
{

publicclassmiManejador:IHttpHandler
{

publicvoidProcessRequest(HttpContextentorno)
{
HttpResponserespuesta=entorno.Response;
respuesta.Write("<html><body><h2>");
respuesta.Write("Saludos");
respuesta.Write("</h2></body></html>");

publicboolIsReusable
{
get
{
returnfalse;
}
}

}
}

Ahora, para que funcione, debemos modificar el fichero Web.config. En la seccin


<configuration> se encuentra en la etiqueta <httpModules>.
En el fichero Web.config se indica una serie de manejadores HTTP, los bsicos para ASP.NET,
que tomarn todas las aplicaciones del servidor web. Los ms comunes que podemos
encontrar son los manejadores para pginas ASP.NET (extensin .aspx), para controles de
usuario (extensin .ashx) y ficheros de configuracin (extensin .config).

48

Conceptos de
Web Forms
Para

indicar

estos

manejadores,

usaremos

la

subetiqueta

<add>

en

la

etiqueta

<httpHandlers> como vemos en la siguiente imagen:

Esta etiqueta tiene los siguientes atributos:

verb: contiene el tipo de verbo HTTP correspondiente al manejador que va a procesar la


peticin. Estos valores pueden ser:

Get, Head, Post, etc.

El carcter asterisco (*) para indicar que el manejador tratar todos los verbos o
acciones del protocolo HTTP.

path: en este atributo indicamos la ruta del recurso que se debe tratar. Tambin acepta
el carcter especial de asterisco, que generalmente se utiliza seguido de la extensin de
los ficheros a tratar.

type:

especifica

la

combinacin

clase/ensamblado

separados

por

comas

que

implementa el manejador HTTP. En nuestro caso no usaremos assembly ya que cuando


aadamos la clase manejador a nuestro proyecto le indicaremos que nos la guarde en el
directorio App_Code; esto har que baste con incluir el nombre de la clase sin necesidad
de indicar assembly.
Por otra parte, podemos aadir nuestros propios manejadores incluyendo una nueva etiqueta
<add> en la seccin de los manejadores http (httpHandlers del fichero Web.config), que
haga referencia a la clase que implementa nuestro manejador.

49

Conceptos de
Web Forms
El cdigo que debemos incluir en el fichero Web.config sera:

<?xmlversion="1.0"?>
<?xmlversion="1.0"?>
<!
ParaobtenermsinformacinsobrecmoconfigurarlaaplicacindeASP.NET,visite
http://go.microsoft.com/fwlink/?LinkId=169433
>
<configuration>

<system.web>

<compilationdebug="true"targetFramework="4.0"/>

<httpHandlers>
<addverb="*"path="pruebaManejador.aspx"
type="Componentes.Pruebas.miManejador"/>
</httpHandlers>
<httpModules>
</httpModules>
</system.web>
</configuration>

En este ejemplo, la clase del manejador es Handler (que incluimos aadiendo un nuevo
elemento clase al proyecto) y se encuentra en el espacio de nombres Componentes.Pruebas.
Adems, la pgina .aspx la llamaremos pruebaManejador.aspx.
Por ltimo, si solicitamos la pgina pruebaManejador.aspx, sera la clase del manejador
(miManejador) la que atendera la solicitud y mostrara una pgina con el mensaje
Saludos.

50

recuerde_

Conceptos de
Web Forms

Podemos representar la pgina ASP.NET actual como un objeto de la clase


Page. Este objeto sirve como contenedor de todos los componentes que
constituyen la pgina y nos permite acceder a sus propiedades, mtodos y
eventos.

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

Dentro del formulario web colocaremos los distintos controles de servidor


de ASP.NET que necesitemos para recoger la informacin correspondiente.

Existe un gran nmero de controles de servidor y cada uno de ellos


pertenece a una clase del paquete.NET Framework.

Existen controles HTML, controles web, controles de lista y controles


avanzados.

Los Web Forms ofrecen un modelo de programacin ms visual, el cdigo


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

Las directivas son identificadores que suelen aadirse al principio de cada


pgina ASP.NET y que informan al sistema de ciertas caractersticas clave de
dicha pgina.

Cada directiva puede contener uno o ms pares atributo-valor.

Las directivas nos permiten especificar datos como el lenguaje en que est
programada la pgina, tipo de acceso a las variables de sesin, tipo de
contenido devuelto por la pgina, importacin de los espacios de nombres
necesarios, etc.

En ASP.NET disponemos del fichero GLOBAL.ASAX que se encuentra situado


en el directorio raz de nuestro servidor web o de nuestro directorio virtual, y
se ejecuta al iniciarse nuestra aplicacin web.

51

recuerde_

Conceptos de
Web Forms

En el fichero GLOBAL.ASAX se incluye el cdigo para el tratamiento de los


eventos Application_Start, Application_End, Session_Start, Session_End,
Application_Error y Application_Disposed.

La configuracin de las aplicaciones ASP.NET se basa en los ficheros XML


Web.config y Machine.config.

Estos ficheros de configuracin contienen una jerarqua anidada de etiquetas


y

subetiquetas

XML

con

atributos

que

especifican

los

valores

de

configuracin. Se distingue entre maysculas y minsculas.

Los cambios en los ficheros de configuracin se toman de forma inmediata y


automtica en el sistema sin necesidad de reiniciar el servidor web o para los
servicios.

Podemos configurar el tiempo de ejecucin de un recurso, el timeout de la


sesin, el uso de cookies para mantener la sesin, activar el uso del buffer,
el mantenimiento automtico del estado de los controles web, etc.

Los mdulos HTTP son los responsables de filtrar cada solicitud/respuesta en


una aplicacin ASP.NET. Se indican en la etiqueta <httpModules> del fichero
de configuracin XML Web.config.

Los manejadores HTTP son los encargados de servir las peticiones de una
extensin particular dentro de ASP.NET, como puede ser la extensin de las
pginas .aspx. Se encuentran en la seccin <httpHandlers> del fichero de
configuracin XML Web.config.

Podemos aadir nuestros propios manejadores incluyendo una nueva


etiqueta <add> en la seccin de los manejadores HTTP, que haga referencia
a la clase que implementa nuestro manejador.

La clase del manejador HTTP debe implementar la propiedad IsReusable y el


mtodo ProcessRequest() de la interfaz System.Web.IHttpHandler.

52

glosario_

Conceptos de
Web Forms
A
API

(Application

Programming

Interface

Interfaz

de

programacin

de

aplicaciones). Es el conjunto de funciones y procedimientos que ofrece una


biblioteca especfica para la comunicacin entre componentes software.
ASP (Active Server Pages). Pginas activas del servidor Internet Information
Server. ASP es la versin anterior a la tecnologa ASP.NET de Microsoft.
C
CLR (Common Language Runtime). Motor de ejecucin comn incluido en el
paquete Microsoft .NET.
CSS (Cascading Style Sheets - Hojas de Estilo en Cascada). Se utilizan para dar
formato a documentos HTML o XML, separando los datos del formato de
presentacin.
CTS (Common Type System). Especificacin de tipos bsicos para la integracin
de distintos lenguajes de programacin en Microsoft .NET (como C#, Visual Basic
.NET, JScript, .NET).
C#. Lenguaje creado por Microsoft para su plataforma .NET. Es parecido a C++ y
Java.
D
DHTML (Dinamic HTML - HTML dinmico). Se forma de una conjuncin de HTML,
hojas de estilo en cascada (CSS) y lenguajes de Script como JavaScript o
VBScript.
DLL (Dynamic Link Library - Bibliotecas de Enlace Dinmico). Es un archivo que
contiene funciones que se pueden llamar desde aplicaciones u otras DLL. Los
desarrolladores utilizan las DLL para poder reciclar el cdigo y aislar las
diferentes tareas. Las DLL no pueden ejecutarse directamente, es necesario
llamarlas desde un cdigo externo. Las DLL de Windows permiten que las
aplicaciones puedan operar en el entorno de Windows.
F
Framework (Marco de trabajo). Es un esquema o estructura que puede incluir
soporte

de

programas,

bibliotecas

un

lenguaje

interpretado

organizacin, desarrollo y/o la implementacin de una aplicacin.

53

para

la

glosario_

Conceptos de
Web Forms
H
HTML (HiperText Markup Language). Lenguaje para la creacin de pginas web
relacionadas entre s por hipertexto.
HTTP (HiperText Transport Protocol). Protocolo de comunicaciones utilizado por
los navegadores de Internet para el acceso a recursos web, como ficheros de
imgenes, vdeo, pginas HTML, pginas ASP, pginas ASPX, etc.
I
IIS (Internet Information Server). Es el servidor web de Microsoft. ASP.NET
funciona sobre l.
J
Java. Lenguaje de programacin orientado a objetos desarrollado por Sun
Microsystems.
JavaScript. Lenguaje de Script desarrollado por Netscape y utilizado en los
navegadores de Internet.
M
MDAC (Microsoft Data Access Components). Componentes Microsoft de acceso a
datos.
MFC (Microsoft Fundation Classes). Librera basada en jerarqua de clases.
Bsicamente encapsula el API de Windows en una forma orientada a objetos.
MSIL. Lenguaje intermedio para la ejecucin de aplicaciones en Microsoft .NET.
P
PHP (Personal Home Page - Procesador de hipertexto). Las pginas PHP
presentan una tcnica similar a las pginas ASP de Microsoft, es decir, las
pginas HTML incluyen el cdigo PHP embebido en ellas y al ejecutarlas, se
genera cdigo HTML dinmicamente.
Proceso de negocio. Es un conjunto de tareas relacionadas lgicamente, que
toman uno o ms tipos de entradas (inputs), llevadas a cabo para lograr un
resultado de negocio definido (outputs). Tambin puede verse como un conjunto
de actividades que colectivamente consiguen alcanzar un objetivo de negocio.

54

glosario_

Conceptos de
Web Forms
Es, por ejemplo, el proceso a travs del cual una organizacin ofrece sus
servicios a sus clientes.
R
RAD (Rapid Application Development - Desarrollo rpido de aplicaciones). Es un
proceso de desarrollo de software desarrollado inicialmente en 1980. Tiende a
englobar la usabilidad, la utilidad y la rapidez de ejecucin.
RIA (Rich Internet Applications - aplicaciones de Internet enriquecidas). Son un
nuevo tipo de aplicaciones con ms ventajas que las tradicionales aplicaciones
web. Esta surge como una combinacin de las ventajas que ofrecen las
aplicaciones web y las aplicaciones tradicionales.
S
Script. Es un guion o conjunto de instrucciones. Permiten la automatizacin de
tareas creando pequeas utilidades.
SDK (Software Development Kit - kit de desarrollo de software). Es un conjunto
de herramientas de desarrollo que le permite a un programador crear software.
V
VBScript (Visual Basic Script). Lenguaje de Script desarrollado por Microsoft.
X
XML (eXtensible Markup Language - lenguaje de marcado extensible). Se utiliza
para la construccin de documentos de datos estructurados multi-propsito.

55

referencias web_

Conceptos de
Web Forms
Informacin y recursos para crear

http://msdn.microsoft.com/es-

pginas web ASP.NET

es/asp.net

Referencia

completa

de

todas

las

http://msdn.microsoft.com/es-

directivas en ASP.NET.

es/library/xz702w3e.aspx

Blog sobre ASP.NET

http://www.asp.net/es/aprender/

Pgina

con

recursos

formativos,

http://www.elguille.info/NET/ASPNET

ejemplo, etc. de ASP.NET

/Default.aspx

The Official Microsoft ASP.NET Site

http://www.asp.net/
http://msdn.microsoft.com/es-

Informacin general sobre ASP.NET

es/library/4w3ex9c2.aspx#VisualWe
bDeveloper

Herramientas imprescindibles para un


desarrollador de .NET

http://www.genbetadev.com/herrami
entas/herramientas-imprescindiblespara-un-desarrollador-de-net

57

bibliografa_

Conceptos de
Web Forms
Griffiths, Ian; Adams, Matthew; Liberty, Jesse. Programming C# 4.0. 6th Edition.
OReilly. 2010.
MacDonald, Matthew. Beginning ASP.NET 4 in CSharp 2010. Apress. Washington.
2010.
Mackey, Alex. Introducing .NET 4.0 with Visual Studio 2010. Apress. 2010.
Mueller, John Paul. Start Here! Learn Microsoft Visual C# 2010. OReilly Media,
Inc. 2011.
Northrup, Tony; Snell, Mike. Exam 70-515: Web Applications Development with
Microsoft .NET Framework 4. Microsoft Press. 2010.
Shepherd, George. Microsoft ASP.NET 4 Step by Step. Microsoft Press. 2010.
Stephen, Rob. Start Here! Fundamentals of Microsoft .NET Programming. OReilly
Media, Inc. 2011.

59

Das könnte Ihnen auch gefallen