1. Herramienta software para la
evaluación
psicosocial de deportistas y
entornos deportivos
Sergio Luis González Ruiz
hergio@gmail.com
http://www.menpas.com Antonio Hernández Mendo
Universidad de Málaga mendo@uma.es
(España) José Luis Pastrana
Brincones
pastrana@lcc.uma.es
Resumen
El objetivo de esta herramienta software es el apoyo a la evaluación del comportamiento
psicosocial de los deportistas y de los usuarios de entornos deportivos, a través de la implementación
de unos cuestionarios y tareas psicológicas donde se evalúa su conducta como deportista (o
prácticamente de actividad deportiva) y en relación al entorno, así como su comportamiento de
usuario. La importancia de esta herramienta radica en tres puntos fundamentales. Por un lado la
rapidez en la evaluación tanto de deportistas como de organizaciones, instituciones o entornos y su
consecuente inmediatez en la obtención de los resultados de dicha evaluación. En segundo lugar cubre
una necesidad existente dentro de la psicología on-line como es la evaluación en Psicología del
Deporte, no sólo de deportistas sino de organizaciones y entornos deportivos. El tercero, y quizás más
ambicioso, la elaboración de una base de datos de baremación de cuestionarios e inventarios aceptados
por la comunidad científica internacional de carácter supranacional. No existe un lugar on line con
carácter profesional y gratuito donde puedan acceder los profesional y ofrezcan pruebas psicológicas
con información de las propiedades psicométricas y garantías metodológicas.
Palabra claves: Software. Evaluación psicosocial. Deportistas. Entornos deportivos
http://www.efdeportes.com/ Revista Digital - Buenos Aires - Año 15 - Nº 144 - Mayo de 2010
1/1
Introducción
La importancia de esta herramienta radica en tres puntos fundamentales. Por un lado la
rapidez en la evaluación tanto de deportistas como de organizaciones, instituciones o entornos
y su consecuente inmediatez en la obtención de los resultados de dicha evaluación. En segundo
lugar cubre una necesidad existente dentro de la psicología on-line como es la evaluación en
Psicología del Deporte, no sólo de deportistas sino de organizaciones y entornos deportivos. El
tercero, y quizás más ambicioso, la elaboración de una base de datos de baremación de
cuestionarios e inventarios aceptados por la comunidad científica internacional de carácter
supranacional.
Gracias a las nuevas tecnologías podemos ofrecer a los usuarios la posibilidad de realizar on-
line cualquiera de los cuestionarios o aplicaciones que se describen en este proyecto.
Simplemente hace falta una conexión a Internet y darse de alta en la aplicación y podrá
acceder de forma cómoda y amigable a la realización de las pruebas que crea oportunas,
obteniendo los resultados de las mismas al finalizar la prueba seleccionada.
El objetivo de esta herramienta software es el apoyo a la evaluación del comportamiento
psicosocial de los deportistas y de los usuarios de entornos deportivos, a través de la
implementación de unos inventarios psicológicos y programas donde se evalúa su conducta
como deportista y en relación al entorno, así como su comportamiento de usuario.
2. Por otro lado, otro objetivo es la familiarización por parte del programador de las tecnologías
usadas para dicho desarrollo del proyecto, basándose principalmente en la tecnología .NET. El
uso de esta tecnología ha sido una gran experiencia, con un entorno de desarrollo muy
amigable y fácil de usar. Esta tecnología la veremos en capítulos posteriores.
Entre estos inventarios, tareas y programas se encuentran:
1. IPED: Cuestionario para evolución de perfiles psicológicos de ejecución
deportiva (Hernández Mendo, 2006).
2. POMS: Cuestionario de Evaluación de Estados de Humor (McNair, Lorr,
Droppleman, 1971; Hernández Mendo y Ramos, 1995).
3. ICPAF: Cuestionario para evaluación de la calidad de programas deportivos
(Hernández Mendo, 2001; Morales Sánchez, Hernández Mendo, y Blanco,
2005).
4. CUVACOT: Cuestionario para Valoración de Actividades de Ocio y Tiempo libre
(Hernández Mendo, 2001).
5. BURNOUT: Cuestionario que evalúa el estrés en el trabajo. (Maslach y
Jackson, 1986).
6. EPI: Cuestionario de Personalidad para adultos (Eysenck, y Eysenck, 1975).
7. MODRIAN: Cuadricula coloreada (Zeki y Shipp, 1988; Zeki, 1992; Hernández
Mendo, y Ramos, 2000).
8. EFECTO STROOP: interferencia semántica producida como consecuencia de la
automaticidad en la lectura. Esto ocurre cuando el significado de la palabra
interfiere en la tarea de nombrar, por ejemplo, el color de la tinta en que está
escrita (Ridley Stroop, 1935).
9. CSAI 2: Inventario del Estado de Ansiedad en Competición – 2. (Martens,
1982; Martens, Burton, Vealey, Bump & Smith, 1990).
10. STAI: Cuestionario de Ansiedad Estado-Rasgo. (Spielberger, Gorsuch, &
Luschene, 1970).
11. SCAT: Sport Competition Anxiety Test (Martens, 1977).
12. SERVQUAL: Cuestionario que evalúa las características de los servicios
deportivos (Parasuraman, Zeithaml y Berry, 1985, 1988; Morales Sánchez,
Hernández Mendo y Blanco, 2009).
Los datos obtenidos de los inventarios serán almacenados en una base de datos, que será
exportable a distintos paquetes estadísticos. A partir de esta base de datos se realizará una
interpretación gráfica de los valores obtenidos.
Se pretende controlar que el acceso a estos inventarios y programas se realice una vez que
el usuario se ha dado de alta en nuestra base de datos rellenando previamente un formulario y
comprobando en la medida de lo posible que los datos introducidos son correctos.
El acceso a la aplicación y a los resultados obtenidos por los usuarios sólo podrán ser
realizado por el gestor de la aplicación, pudiendo consultar por diferentes categorías como
nacionalidad, grupo de personas (p.e. deporte practicado), género, edad, profesión u otros
campos. Estos datos se interpretarán gráficamente o a través de otros mecanismos
Un objetivo importante además de la funcionalidad óptima, es construir un entorno amigable
y cómodo favoreciendo de esta manera el acercamiento del usuario al mismo.
5. Visual C++ se mejora para cumplir con más estándares, el Visual C++
Toolkit 2003.
• Después nos encontramos con Net 2.0 Visual Studio 2005 se empezó a
comercializar a través de Internet a partir del 4 de Octubre de 2005 y
llegó a los comercios a finales del mes de Octubre en inglés. En
castellano no salió hasta el 4 de Febrero de 2006. (Esta es la versión
usada para este proyecto.)
• Más recientemente NET 3.5 incluye biblioteca ASP .NET AJAX para
desarrollar aplicaciones Web más eficientes, interactivas y altamente
personalizadas que funcionen para todos los navegadores más
populares y utilicen las últimas tecnologías y herramientas Web,
incluyendo Silverlight y Popfly. Visual Studio 2008 fue liberado (RTM) el
17 de Noviembre de 2007 en inglés, mientras que la versión en
castellano no fue liberada hasta el 2 de Febrero de 2008.
• El nuevo framework está diseñado para aprovechar las ventajas que
ofrece el novedoso sistema operativo "Windows Vista" a través de sus
subsistemas "Windows Communication Foundation" (WCF) y "Windows
Presentation Foundation" (WPF)[.] El primero tiene como objetivo la
construcción de aplicaciones orientadas a servicios mientras que el
último apunta a la creación de interfaces de usuarios más dinámicas
que las conocidas hasta el momento.
2.3. Características principales
NET Framework es el componente de Microsoft Windows que permite crear y ejecutar la
próxima generación de aplicaciones de software y servicios Web XML, componentes que
facilitan la integración compartiendo datos e información a través de la red mediante protocolos
estándar independientes de la plataforma.
.NET Framework se compone de dos elementos principales:
• Common Language Runtime (Lenguaje Común de Ejecución).
• Un conjunto unificado de bibliotecas de clases, tales como
o ADO .NET para el acceso a datos sin rigidez.
o ASP .NET para aplicaciones Web y servicios Web XML.
o Windows forms para aplicaciones cliente inteligentes.
El Framework permite una arquitectura flexible, ya que usa los servicios Web como
mecanismo de comunicación nativo. Esto facilita la integración de aplicaciones a través de
intranets o de Internet, a la vez que proporciona la posibilidad de aprovechar las aplicaciones y
los recursos de programación y de tecnologías de la información existentes.
Promueve un desarrollo más rápido pudiendo emplear uno de los muchos lenguajes de
programación que admite para generar todo tipo de aplicaciones basadas en Windows, tales
como servicios Web XML, aplicaciones cliente inteligentes o aplicaciones Web para dispositivos,
PCs y servidores. Además permite la integración de aplicaciones escritas en distintos lenguajes.
Para dar soporte a esta ventaja del Framework, Microsoft desarrolló el entorno de desarrollo
integrado (IDE) Visual Studio .NET. Además utiliza un diseño totalmente basado en
componentes y sin estructura predefinida, por lo que permite a los programadores centrarse en
6. escribir la lógica de negocio. Los programadores pueden utilizar docenas de controles que
encapsulan tareas comunes como conectar bases de datos o mostrar una vista preliminar,
evitando tener que escribir en lenguaje de definición de interfaz (IDL: Interface Definition
Language).
Mejora el rendimiento de las aplicaciones Web típicas gracias a ASP .NET, que incorpora
funciones avanzadas de compilación y almacenamiento en caché. El Framework administra la
memoria, los procesos y los subprocesos con el objeto de evitar las pérdidas de memoria.
Incrementa la seguridad con funciones tales como el control exhaustivo a nivel de método
sobre las tareas que las aplicaciones pueden llevar a cabo o no, basándose en quién escribió el
código, el propósito del mismo, desde dónde se ha instalado y quién está intentando ejecutarlo.
2.4. Arquitectura .NET
La nueva tecnología de Microsoft ofrece soluciones a los problemas de programación
actuales, como son la administración de código o la programación para Internet. Para
aprovechar al máximo las características de .NET es necesario entender la arquitectura básica
en la que esta implementada esta tecnología y así beneficiarse de todas las características que
ofrece esta nueva plataforma.
El Framework de .NET es una infraestructura sobre la que se reúne todo un conjunto de
lenguajes y servicios que simplifican enormemente el desarrollo de aplicaciones. Mediante esta
herramienta se ofrece un entorno de ejecución altamente distribuido, que permite crear
aplicaciones robustas y escalables.
La plataforma .NET se ejecuta sobre la plataforma hardware. Uno de sus componentes es el
CLR. Todos los otros componentes se ejecutan sobre el CLR y de esta forma son
independientes de la plataforma hardware (siempre que ésta sea Windows).
Sobre el CLR se ejecutan una serie de librerías que son utilizadas por los programas,
simplificando el desarrollo al ofrecer una serie de servicios ya programados, listos para
reutilizar. Hay una librería básica que contiene soporte para estructuras de datos,
interoperabilidad con el código .NET, entre otros servicios. Hay librerías para acceso a bases de
datos y XML así como para interfaz gráfica, tanto para el escritorio como para el Web.
Estas librerías son usadas por los programas compilados. Entre estos programas podemos
destacar a los compiladores para los diferentes lenguajes .NET, que traducen los programas en
cada uno de estos lenguajes a programas compilados.
La plataforma .NET es gratuita y libremente distribuible. Es un requisito imprescindible para
desarrollar y ejecutar los programas .NET y su curva de aprendizaje es lenta, debido a la gran
cantidad de clases existentes en las diferentes librerías.
7. Figura 1. Arquitectura de la plataforma .NET
2.5. CLR, el núcleo del Framework
El Common Language Runtime o CLR (Lenguaje común en tiempo de ejecución) es el motor
de ejecución de las aplicaciones .NET, que se encarga de ejecutar todo el código .NET. Es la
parte encargada de traducir en tiempo de ejecución el código intermedio de las aplicaciones y
librerías a código máquina, adaptándolo a las características del sistema operativo donde se
está produciendo la ejecución.
Es el componente de la máquina virtual del .NET Framework de Microsoft. La
implementación del estándar Common Language Infrastructure que define un ambiente de
ejecución para los códigos de los programas. El CLR ejecuta una forma de código intermedio
(bytecode) llamada Common Intermediate Language (CIL, anteriormente conocido como MSIL).
A pesar de que algunas implementaciones del Common Language Infrastructure se ejecutan
en sistemas operativos no Windows, el CLR se ejecuta sólo en sistemas operativos de Microsoft
Windows.
Además de la integración de lenguajes, también se encarga del cumplimiento de las normas
de seguridad y la administración de la memoria, los procesos y los subprocesos entre otros.
Las principales características y servicios que ofrece el CLR son:
• Eliminación del “infierno de las DLLs”: En la plataforma .NET
desaparece el problema conocido como “infierno de las DLLs” que se
da en los sistemas operativos actuales de la familia Windows, problema
que consiste en que al sustituirse versiones viejas de DLLs compartidas
por versiones nuevas puede que aplicaciones que fueron diseñadas
para ser ejecutadas usando las viejas dejen de funcionar si las nuevas
no son 100% compatibles con las anteriores.
• Modelo de programación consistente: A todos los servicios y
facilidades ofrecidos por el CLR se accede de la misma forma: a través
de un modelo de programación orientado a objetos. Esto es una
8. diferencia importante respecto al modo de acceso a los servicios
ofrecidos por los algunos sistemas operativos actuales, en los que a
algunos servicios se les accede a través de llamadas a funciones
globales definidas en DLLs y a otros a través de objetos
• Integración de lenguajes: Desde cualquier lenguaje para el que
exista un compilador que genere código para la plataforma .NET es
posible utilizar código generado para la misma usando cualquier otro
lenguaje tal y como si de código escrito usando el primero se tratase.
Microsoft ha desarrollado un compilador de C# que genera código de
este tipo, así como versiones de sus compiladores de Visual Basic
(Visual Basic .NET) y C++ (C++ con extensiones gestionadas) que
también lo generan y una versión del intérprete de JScript (JScript
.NET) que puede interpretarlo
• Modelo de programación sencillo: Con el CLR desaparecen muchos
elementos complejos incluidos en los sistemas operativos actuales
(registro de Windows, GUIDs, etc.) El CLR no es que abstraiga al
programador de estos conceptos, sino que son conceptos que no
existen en la plataforma .NET
• Ejecución multiplataforma: El CLR actúa como una máquina virtual,
encargándose de ejecutar las aplicaciones diseñadas para la plataforma
.NET. Es decir, cualquier plataforma para la que exista una versión del
CLR podrá ejecutar cualquier aplicación .NET. Microsoft ha desarrollado
versiones del CLR para la mayoría de las versiones de Windows. Por
otro lado ha firmado un acuerdo con Corel para portar el CLR a Linux y
también hay terceros que están desarrollando de manera
independiente versiones de libre distribución del CLR para Linux.
• Gestión de memoria: El CLR incluye un recolector de basura que
evita que el programador tenga que tener en cuenta cuándo ha de
destruir los objetos que dejen de serle útiles. Este recolector es una
aplicación que se activa cuando se quiere crear algún objeto nuevo y
se detecta que no queda memoria libre para hacerlo, caso en que el
recolector recorre la memoria dinámica asociada a la aplicación,
detecta qué objetos hay en ella que no puedan ser accedidos por el
código de la aplicación, y los elimina para limpiar la memoria de
“objetos basura” y permitir la creación de otros nuevos.
• Soporte multihilo: El CLR es capaz de trabajar con aplicaciones
divididas en múltiples hilos de ejecución que pueden ir evolucionando
por separado en paralelo o intercalándose, según el número de
procesadores de la máquina sobre la que se ejecuten.
• Aislamiento de procesos: El CLR asegura que desde código
perteneciente a un determinado proceso no se pueda acceder a código
o datos pertenecientes a otro, lo que evita errores de programación
muy frecuentes e impide que unos procesos puedan atacar a otros.
• Tratamiento de excepciones: En el CLR todos los errores que se
puedan producir durante la ejecución de una aplicación se propagan de
igual manera: mediante excepciones. Esto es muy diferente a como se
venía haciendo en los sistemas Windows hasta la aparición de la
plataforma .NET, donde ciertos errores se transmitían mediante
códigos de error en formato Win32.
9. • Distribución transparente: El CLR ofrece la infraestructura necesaria
para crear objetos remotos y acceder a ellos de manera
completamente transparente a su localización real, tal y como si se
encontrasen en la máquina que los utiliza.
• Seguridad avanzada: El CLR proporciona mecanismos para restringir
la ejecución de ciertos códigos o los permisos asignados a los mismos
según su procedencia o el usuario que los ejecute. Es decir, puede no
darse el mismo nivel de confianza a código procedente de Internet que
a código instalado localmente o procedente de una red local; puede no
darse los mismos permisos a código procedente de un determinado
fabricante que a código de otro; y puede no darse los mismos permisos
a un mismo códigos según el usuario que lo esté ejecutando o según el
rol que éste desempeñe.
• Seguridad de tipos: El CLR facilita la detección de errores de
programación difíciles de localizar comprobando que toda conversión
de tipos que se realice durante la ejecución de una aplicación .NET se
haga de modo que los tipos origen y destino sean compatibles.
Figura 2. Common Language Runtime (CLR)
2.6. Biblioteca de clases
La plataforma .NET nos ofrece infinidad de funcionalidades que se utilizan como punto de
partida para crear las aplicaciones. Existen funcionalidades básicas (por ejemplo todo lo
relacionado con la E/S de datos o la seguridad) y funcionalidades avanzadas en las que se
fundamentan categorías enteras de aplicaciones (acceso a datos, creación de aplicaciones
Web...). Toda esta funcionalidad está implementada en forma de bibliotecas de funciones que
físicamente se encuentran en diversas DLL. A su conjunto se le denomina Base Classes
Library(Biblioteca de clases base o BCL) y forman parte integral de la plataforma .NET, es decir,
no se trata de añadidos que se deban obtener o adquirir aparte.
10. La siguiente figura ilustra la arquitectura conceptual de la plataforma .NET. En ella se
pueden observar los elementos que se han mencionado en apartados anteriores (lenguajes,
CLR, CLS...) y en qué lugar de se ubican las bibliotecas de clases base:
Figura 3. Distintos elementos de la plataforma .NET y cómo se relacionan entre sí
Todo lo que se encuentra en la BCL forma parte de la plataforma .NET. De hecho existe tal
cantidad de funcionalidad integrada dentro de estas bibliotecas que el mayor esfuerzo que todo
programador que se inicia en .NET debe hacer es el aprendizaje de las más importantes. De
todos modos Visual Studio ofrece mucha ayuda contextual (documentación, Intellisense...) y
una vez que se aprenden los rudimentos resulta fácil ir avanzando en el conocimiento de la BCL
a medida que lo vamos necesitando.
BCL es una librería incluida en el .NET Framework formada por cientos de tipos de datos que
permiten acceder a los servicios ofrecidos por el CLR y a las funcionalidades más
frecuentemente usadas a la hora de escribir programas. Además, a partir de estas clases
prefabricadas el programador puede crear nuevas clases que mediante herencia extiendan su
funcionalidad y se integren a la perfección con el resto de clases.
Esta librería está escrita en MSIL, por lo que puede usarse desde cualquier lenguaje cuyo
compilador genere MSIL. A través de las clases suministradas en ella es posible desarrollar
cualquier tipo de aplicación, desde las tradicionales aplicaciones de ventanas, consola o servicio
de Windows NT hasta los novedosos servicios Web y páginas ASP .NET.
En la siguiente figura podemos ver el conjunto de clases comunes accesibles desde todos los
lenguajes que corren sobre el Framework.
11. Figura 4. Biblioteca de Clases Base de .NET
La biblioteca de clases base maneja la mayoría de las operaciones básicas que se encuentran
involucradas en el desarrollo de aplicaciones, incluyendo entre otras:
• Interacción con los dispositivos periféricos
• Manejo de datos (ADO .NET)
• Administración de memoria
• Cifrado de datos
• Transmisión y recepción de datos por distintos medios (XML, TCP/IP)
• Manejo y administración de excepciones
• Manejo del sistema de ventanas
• Herramientas de despliegue de gráficos (GDI+)
• Herramientas de seguridad e integración con la seguridad del sistema
operativo
• Manejo de cadenas de caracteres y expresiones regulares
• Operaciones aritméticas
• Manipulación de fechas, zonas horarias y periodos de tiempo
• Manejo de arreglos de datos y colecciones
• Manipulación de archivos de imágenes
• Generación de código
• Manejo de idiomas
• Interacción con el API Win32 o Windows API.
• Compilación de código
Esta funcionalidad se encuentra organizada por medio de espacios de nombres jerárquicos.
La Biblioteca de Clases Base se clasifica, en tres grupos clave:
• ASP .NET y Servicios Web XML
• Windows Forms
12. • ADO .NET
2.6.1. Espacios de nombres
Espacios de nombres: La forma de organizar la biblioteca de clases de .NET dentro del
código es a través de los espacios de nombres (namespaces), donde cada clase está organizada
en espacios de nombres según su funcionalidad. Por ejemplo, para manejar ficheros se utiliza el
espacio de nombres System.IO y si lo que se quiere es obtener información de una fuente de
datos se utilizará el espacio de nombres System.data. Todo lo que tiene que ver con el manejo
de estructuras de datos XML en la plataforma .NET se encuentra bajo el espacio de
nombres System.xml. La funcionalidad fundamental para crear aplicaciones Web está en el
espacio de nombres System.web.
La principal ventaja de los espacios de nombres de .NET es que de esta forma se tiene toda
la biblioteca de clases de .NET centralizada bajo el mismo espacio de nombres (System). Las
clases incluidas en las bibliotecas proporcionan las funcionalidades básicas que puede necesitar
toda aplicación.
Además, desde cualquier lenguaje se usa la misma sintaxis de invocación, ya que a todos los
lenguajes se aplica la misma biblioteca de clases.
Dada la amplitud de la BCL, ha sido necesario organizar las clases en ella incluida en
espacios de nombres que agrupen clases con funcionalidades similares. Por ejemplo, los
espacios de nombres más usados son:
Utilidad de los tipos
Espacio de nombres
de datos que contiene
Tipos muy frecuentemente usados, como los tipos
básicos, tablas, excepciones, fechas, números
System
aleatorios, recolector de basura, entrada/salida en
consola, etc.
Colecciones de datos de uso común como pilas, colas,
System.Collections
listas, diccionarios, etc.
Manipulación de bases de datos. Forman la
System.Data
denominada arquitectura ADO .NET.
System.IO Manipulación de ficheros y otros flujos de datos.
System .NET Realización de comunicaciones en red.
Acceso a los metadatos que acompañan a los módulos
System.Reflection
de código.
System.Runtime.Remoting Acceso a objetos remotos.
13. Acceso a la política de seguridad en que se basa el
System.Security
CLR.
System.Threading Manipulación de hilos.
Creación de interfaces de usuario basadas en
System.Web.UI.WebControls
ventanas para aplicaciones Web.
Creación de interfaces de usuario basadas en
System.Windows.Forms
ventanas para aplicaciones estándar.
System.XML Acceso a datos en formato XML.
Tabla 1. Espacios de nombres de la BCL más usados
A continuación explicaremos con más detalle algunos de ellos:
• Microsoft.CSharp, Microsoft.JScript y
Microsoft.VisualBasic: contienen las clases necesarias para
compilar y generar código mediante el lenguaje C#, JScript y
Basic .NET correspondientemente.
• Microsoft.Win32: proporciona dos tipos de clases: las que
controlan los eventos desencadenados por el sistema operativo
y las que manipulan el Registro del sistema.
• System: contiene clases fundamentales y clases base que
definen los valores y tipos de datos de referencia, eventos y
controladores de eventos, interfaces, atributos y excepciones
de procesamiento comúnmente utilizados. Otras clases
proporcionan servicios para convertir tipos de datos, manipular
parámetros de métodos, realizar cálculos matemáticos, invocar
programas remotos y locales, administrar el entorno de
aplicaciones y supervisar aplicaciones administradas y no
administradas.
• System.Collections: Esta librería contiene interfaces y clases
para el tratamiento de colecciones, las cuales representan una
estructura de programación muy utilizada en las aplicaciones
.NET.en ellas se definen diversas colecciones de objetos, tales
como listas, colas, matrices, tablas hash y diccionarios.
• System.IO: contiene las clases para la realización de
operaciones de entrada salida de datos en un programa, como
puede ser la transferencia de información entre aplicaciones y
un archivo de disco. Permite lectura y escritura sincrónica y
asincrónica en archivos y secuencias de datos.
• System.Text: contiene clases que permiten representar
codificaciones de caracteres ASCII, Unicode, UTF-7 y UTF-8;
clases bases abstractas para convertir bloques de caracteres a
y desde bloques de bytes; y una clase auxiliar que procesa y
da formato a objetos String sin crear instancias intermedias
dicha clase.
14. • System.Threading: proporciona clases e interfaces que
permiten la programación multiproceso. Este espacio de
nombres incluye una clase ThreadPool, que administra grupos
de subprocesos y una clase Mutex para sincronizar
subprocesos mutuamente excluyentes. System.Threading
también proporciona clases para la programación de
subprocesos y la notificación de espera. Actualmente se ha
introducido un nuevo espacio de nombres correspondiente a la
nueva interfaz diseñada para la próxima entrega de Windows
(conocida hasta ahora como Longhorn).
Las bibliotecas antes citadas las podemos agrupar en bibliotecas de clase Base, las citadas a
continuación, se podrían definir como bibliotecas de interfaz grafica, se trata de bibliotecas que
incluyen clases específicamente desarrolladas para la creación de aplicaciones basadas en
entorno gráfico. Las dos bibliotecas más importantes que componen este grupo son:
• Windows.Form: Incluye todas las clases para la creación de
aplicaciones Windows en .NET. Entre otras proporciona nuevas
versiones de controles Windows clásicos que se utilizaban en
las antiguas aplicaciones de visual Basic, así como otros nuevos
mucho más potentes y sofisticados.
• ASP .NET. Esta librería se puede considerar como otro de los
grandes logros de la plataforma .NET. En ella encontramos
todo lo necesario para la creación de aplicaciones que se van a
ejecutar en un entorno Web. Proporciona clases tanto para la
construcción de objetos gráficos (controles Web) como para la
implementaron de objetos de servidor (objetos ASP). Dado que
este Proyecto es una aplicación Web, esta librería será objeto
de un profundo estudio.
2.7. Lenguajes de programación ( .NET)
Actualmente es posible utilizar un gran número de lenguajes de programación para crear
aplicaciones .NET; entre ellos están Visual Basic, c#, C++, Delphi o incluso Cobol.
15. Figura 5. Lenguajes .NET
La plataforma .NET incluye más de 5000 clases para ayudar a los programadores en el
desarrollo de todo tipo de programas. Estas clases se agrupan en librerías y todas ellas van
incorporadas en el entorno de ejecución de .NET.
Estas librerías son comunes para todos los lenguajes soportados por la plataforma, es decir,
no hay una versión de la librería para c#, otra para VB .NET, etc., sino que el mismo conjunto
de clases puede ser utilizado por cualquiera de los lenguajes. Cada una de las librerías de la
plataforma se encuentra compilada en un ensamblado de tipo ddl.
2.7.1. - C#, el lenguaje nativo de .NET Framework
Se trata de un lenguaje nacido con la propia plataforma .NET y es conocido también como
Visual c# .NET. Como se puede deducir, de su nombre, su sintaxis es parecida al del lenguaje
C; además tiene grandes similitudes con otros lenguajes de programación orientados a objetos
como C++ y Java, lo que le permite ser el lenguaje más utilizado en la creación de aplicaciones
.NET.
C# es un lenguaje de programación orientado a objetos desarrollado por Microsoft como
parte de su iniciativa .NET. Microsoft basó C# en C++ y Java y fue diseñado para combinar
potencia y velocidad de programación. Es el lenguaje con el que se ha desarrollado la
plataforma Microsoft .NET, y necesita esta para que los programas escritos en C# puedan
ejecutarse. Además necesita de las librerías de la plataforma y del compilador JIT para que
compile durante la ejecución del programa el código IL.
2.8. Entorno de desarrollo
Uno de los grandes logros de Microsoft con el lanzamiento de la plataforma NET ha sido la
creación de un único entorno de desarrollo para la construcción de las aplicaciones. Visual
Studio .NET es un entorno de desarrollo con el que podemos crear cualquier tipo de aplicación
.NET, desde programas para Windows hasta utilidades para una agenda electrónica, pasando,
por supuesto por la creación de aplicaciones de entornos Web, pudiendo además utilizar para
ello cualquiera de los lenguajes soportados por la plataforma.
Todas las utilidades del entorno Visual Studio .NET, como son la compilación y ejecución de
programas o las herramientas de depuración, están disponibles para todos estos tipos de
aplicaciones.
El .NET Framework constituye el núcleo fundamental de .NET al proporcionar la plataforma
para el desarrollo y ejecución de las aplicaciones.
Se trata de una capa software que se encuentra entre la aplicación y el sistema operativo,
pudiendo llegarse a considerar una extensión de este. De hecho, aunque se distribuye de forma
independiente, las últimas versiones de los sistemas operativos Microsoft, como Windows 2003
Server, ya incorporan el .NET Framework.
16. Durante la ejecución de las aplicaciones el .NET Framework traduce el código intermedio en
el que ha realizado la compilación a código máquina, además de proporcionar todas las clases
necesarias para la ejecución de la aplicación.
3. El lenguaje de programación C#
3.1. El lenguaje C#
Creado específicamente por Microsoft para trabajar sobre la plataforma .NET y, sin duda, el
preferido por la mayoría de los programadores para el desarrollo de todos los tipos de
aplicaciones que se van a ejecutar bajo esta plataforma.
C# (Ceballos, 2007) es uno de los lenguajes más modernos que podemos encontrar en la
actualidad, especialmente cuando se le compara con otros de la misma familia, como C y C++,
o incluso respecto a otros de nacimiento también reciente, como Java.
Un nuevo lenguaje de programación no se desarrolla sencillamente porque sí, existiendo
siempre razones suficientes que justifiquen la gran inversión que supone un esfuerzo de este
tipo.
Hasta la llegada de C# no existía un lenguaje de programación verdaderamente orientado al
uso y creación de componentes, siendo quizá ésta su aportación más importante. Esta
orientación se refleja, por ejemplo, en el uso de atributos declarativos para establecer ciertas
propiedades de los objetos, sin necesidad de escribir código funcional.
Cumple con la especificación CLS. El código que crearemos con él será traducido a
instrucciones MSIL para entonces ser traducido, justo antes de su ejecución, a instrucciones
nativas que correspondan a la plataforma concreta sobre la cual estemos trabajando.
Se presenta como el último invento en materia de lenguajes de programación, y constituye
también la más reciente y ambiciosa apuesta en este sentido por parte de Microsoft.
Quizás, lo primero que habría que aclarar, es que, de todo el .NET Framework, es la única
parte que puede considerarse terminada, hasta el punto de que el propio Visual Studio .NET ha
sido construido al 90% en C# y el 10% restante en C++. Por otro lado, el lenguaje merece el
calificativo de estándar, en el sentido de que al igual que algunos otros aspectos del entorno-
está siendo sometido a estandarización por parte de ECMA, la misma entidad de normalización
que llevó a cabo la estandarización de Javascript.
3.1.1. Motivos por los cuales deberíamos optar por C#
Este lenguaje irrumpe en el mercado como un lenguaje muy bien diseñado y con muchas
virtudes en una industria plagada de soluciones y herramientas de programación para todos los
gustos. los motivos por los cuales deberíamos optar por C# son:
• C# es un lenguaje moderno y orientado a objetos, con una
sintaxis muy similar a la de C++ y Java. Combina la alta
productividad de Visual Basic con el poder y la flexibilidad de
C++.
17. • La misma aplicación que se ejecuta bajo Windows podría
funcionar en un dispositivo móvil de tipo PDA. Con C#/ .NET
no nos atamos a ninguna plataforma en particular.
• Se puede crear una gran variedad de aplicaciones en C#:
aplicaciones de consola, aplicaciones para Windows con
ventanas y controles, aplicaciones para la Web, etc.
• C# gestiona automáticamente la memoria, y de este modo
evita los problemas de programación tan típicos en lenguajes
como C o C++.
• Mediante la plataforma .NET desde la cual se ejecuta es posible
interactuar con otros componentes realizados en otros
lenguajes .NET de manera muy sencilla.
• También es posible interactuar con componentes no
gestionados fuera de la plataforma .NET. Por ello, puede ser
integrado con facilidad en sistemas ya creados.
• Desde C# podremos acceder a una librería de clases muy
completa y muy bien diseñada, que nos permitirá disminuir en
gran medida los tiempos de desarrollo.
Una de las cosas buenas de .NET es que puedes usar hasta más de 40 lenguajes de
programación diferentes, es la llamada integración de lenguajes.
La idea es que a la hora de compilar, primero se traduce ese lenguaje a un lenguaje
intermedio común a todos y que ya entiende .NET. Por tanto, vale con que exista un
compilador especial para cada lenguaje para que éste pueda trabajar con el poder de .NET.
Microsoft tiene creados compiladores para C++, J# y VB .NET, y obviamente C#, que es el
lenguaje con el que se ha creado toda la plataforma .NET.
Organizado de este modo, podemos usar clases en C# que hereden de J# y ésta, a su vez
de VB .NET. Entonces, si se puede usar cualquier lenguaje... ¿Por qué utilizar C#? Muchas son
las opiniones que pueden surgir al respecto.
Es un lenguaje nuevo y a la vez maduro. Maduro porque, toda la plataforma .NET está hecha
con C#. Fue creado por Scott Wiltamuth y Anders Hejlsberg, este último diseñador del
TurboPascal y la herramienta RAD de Delphi.
C# es más sencillo e intuitivo, más moderno, orientado a objetos (obviamente) y sobretodo
muy eficiente.
Desde un punto de vista práctico, C# es el lenguaje de .NET con más y mejores ejemplos.
Además, "cambiarse" a C# es fácil para todos los programadores de Java y C++, y no
demasiado difícil para los de VB.
3.2. Comparación de C# otros lenguajes
En este apartado se va a comparar el lenguaje C# con los más importantes que tienen cierta
similitud con él, entre los que destacamos: Visual Basic, Java y C++.
3.2.1. Comparación C# & Visual Basic
18. Si un programador trabaja en Visual Basic y está evaluando “cambiar” a C#, no se puede
dudar. Existen muchísimas razones para tomar esta decisión. En primer lugar, uno de los
motivos por los cuales Visual Basic era atractivo era su productividad.
Sí, a pesar de algunos de sus inconvenientes para crear aplicaciones sencillas, no existía
mejor solución que Visual Basic; ningún otro lenguaje podía competir en velocidad de desarrollo
con él. Pues bien, C# le ha quitado la corona; la misma aplicación que se puede realizar en
Visual Basic podrá crearla en C# en, al menos, el mismo tiempo, e incluso más rápidamente.
Por otro lado, gracias a las nuevas características del lenguaje, el diseño de sus aplicaciones
podrá ser más elegante y simple, y de este modo podrá manejar la complejidad de una manera
más natural.
En segundo lugar, los programadores Visual Basic nunca fueron vistos como programadores
reales, aunque muchísimos profesionales sufran de esta etiqueta de manera injusta.
Por último, el paso de Visual Basic 6.0 a C# hasta podría ser considerado lógico para quien
sea un dominador del VB.
3.2.2. Comparación C# & C++
Los detractores de C++ lo acusan de ser un lenguaje híbrido, un C con clases, como muchas
veces es definido. El problema de esta falta de decisión en cuanto al diseño del lenguaje es que
permite que convivan clases con funciones y variables globales, lo cual podría ser tentador para
el programador y podría empobrecer el diseño de una aplicación construida de este modo.
Claro que, por otro lado, hay quienes les gusta ver el vaso medio lleno y sostienen que esta
característica de “hibridez” es positiva, pues deja al programador la posibilidad de tomar lo
mejor de los dos mundos.
C# es, en alguna medida, una evolución de C++, ya que toma prestada su sintaxis y mejora
muchos de sus aspectos, como el hecho de poseer una librería de clases unificada y ser un
lenguaje orientado a objetos puro. Esto no quiere decir que lo reemplace en todos sus usos,
claro.
C++ seguirá teniendo su segmento de utilización en donde es ideal, pero C# invade día tras
día áreas donde antes C++ era único conquistador.
3.2.3. Comparación C# & Java
Muchos sostienen que C# es una copia de Java. Si tomamos ciertos trozos de código escritos
en alguno de estos lenguajes, podría ser imposible determinar si es C# o es Java.
Lo cierto es que parte de la filosofía empleada por ambos lenguajes es la misma. Ambos se
ejecutan sobre una máquina virtual, y esta característica los convierte en lenguajes
potencialmente multiplataforma, ambos poseen especificaciones de subconjuntos de recursos
de lenguaje para implementaciones en diversos dispositivos (por ejemplo, móviles), y ambos
tienen una librería de clases con muchas características en común. Sin embargo, C# presenta la
19. ventaja de integrarse mejor con aplicaciones nativas de la plataforma sobre la cual estemos
trabajando.
Claro que, si accedemos a recursos nativos, perderá la característica de ser multiplataforma,
pero esta característica no siempre es deseada.
Es indudable que Java cuenta con mayor madurez, con más programadores, con el respaldo
de muchas casas de software, entre otras cosas que pueden considerarse ventajosas; pero no
es menos cierto que .NET ha sido desarrollado por algunas de las personas que más conocen
de Java, que cuenta con el respaldo de una inmensa casa de software, y con el apoyo de
muchas personas en el mundo, además de tener una gran aceptación comercial.
3.3. Características fundamentales del lenguaje
C# es un lenguaje moderno y altamente expresivo que se ajusta al paradigma de
programación orientada a objetos. Su sintaxis es similar a C++ y Java. El lenguaje fue
desarrollado en gran parte por Anders Hejlsberg.
En C# no existe el concepto de función global o variable fuera de una clase u objeto. Por su
buen apego a la POO, es posible sobrecargar métodos y operadores. Soporta definición de
interfaces. Ninguna clase puede poseer más de un padre (no se permite la herencia múltiple),
pero sí puede suscribir un contrato con diversas interfaces.
Soporta la definición de estructuras, pero, a diferencia de C++, aquí no son tan parecidas a
las clases y poseen ciertas restricciones. Permite además la declaración de propiedades,
eventos y atributos (que son construcciones declarativas).
Una característica distintiva cada vez más presente en lenguajes modernos es la gestión
automática de memoria y el uso de referencias en lugar de punteros.
Gracias a esta gestión automática de memoria ya no tendremos que preocuparnos por la
existencia de memory leaks (zonas de memoria que permanecen reservadas pero ya no son
utilizadas debido a errores de programación).
Una de las características principales de C# es que se trata de un lenguaje que compila (por
defecto) a un formato intermedio, al estilo de Java, que posteriormente, debe de ser
interpretado por un entorno de ejecución, una máquina JIT (just-in-time), también al estilo de
Java.
La gran diferencia respecto a Java es que, ése intérprete será común a todos los lenguaje
soportados por el entorno de ejecución y mediante este mecanismo permitirá que los
componentes realizados en cualquier lenguaje puedan comunicarse entre sí.
Se trata pues, de una extensión del concepto inicial que dio origen a Java: en lugar de un
único lenguaje para muchas plataformas, se pretende un entorno común multiplataforma, que
soporte muchos lenguajes, basándose en que todos ellos compilen a un mismo código
intermedio. Para hacer viable esta idea, se ha optimizado considerablemente la velocidad,
respecto a Java y ya se están anunciando los primeros .NET Framework para otras plataformas.
20. Dispone de todas las características propias de cualquier lenguaje orientado a
objetos: encapsulación, herencia y polimorfismo.
• Ofrece un modelo de programación orientada a objetos homogéneo, en
el que todo el código se escribe dentro de clases y todos los tipos de
datos, incluso los básicos, son clases que heredan
de System.Object (por lo que los métodos definidos en ésta son
comunes a todos los tipos del lenguaje)
• Permite la definición del significado de los operadores básicos del
lenguaje (+, -, *, &, ==, etc.) para nuestros propios tipos de datos, lo
que facilita enormemente tanto la legibilidad de las aplicaciones como
el esfuerzo necesario para escribirlas.
• Permite definir estructuras, que son clases un tanto especiales: sus
objetos se almacenan en pila, por lo que se trabaja con ellos
directamente y no referencias al montículo, lo que permite accederlos
más rápido. Sin embargo, esta mayor eficiencia en sus accesos tiene
también sus inconvenientes, fundamentalmente que el tiempo
necesario para pasarlas como parámetros a métodos es mayor.
• Es un lenguaje fuertemente tipado, lo que significa se controla que
todas las conversiones entre tipos se realicen de forma compatible, lo
que asegura que nunca se acceda fuera del espacio de memoria
ocupado por un objeto. Así se evitan frecuentes errores de
programación y se consigue que los programas no puedan poner en
peligro la integridad de otras aplicaciones.
• Incorpora propiedades, que son un mecanismo que permite el acceso
controlado a miembros de una clase tal y como si de campos públicos
se tratasen. Gracias a ellas se evita la pérdida de legibilidad que en
otros lenguajes causa la utilización de métodos Set() y Get() pero se
mantienen todas las ventajas de un acceso controlado por estos
proporcionada.
• Admite unos elementos llamados atributos que no son miembros de las
clases sino información sobre éstas que podemos incluir en su
declaración. Por ejemplo, indican si un miembro de una clase ha de
aparecer en la ventana de propiedades de Visual Studio .NET, cuáles
son los valores admitidos para cada miembro en ésta, etc.
• Incluye soporte nativo para eventos y delegados. Los delegados son
similares a los punteros a funciones de otros lenguajes como C++
aunque más cercanos a la orientación a objetos, y los eventos son
mecanismos mediante los cuales los objetos pueden notificar de la
ocurrencia de sucesos. Los eventos suelen usarse en combinación con
los delegados para el diseño de interfaces gráficas de usuario, con lo
que se proporciona al programador un mecanismo cómodo para
escribir códigos de respuesta a los diferentes eventos que puedan
surgir a lo largo de la ejecución de la aplicación. (pulsación de un
botón, modificación de un texto, etc.)
• Tiene a su disposición un recolector de basura que libera al
programador de la tarea de tener que eliminar las referencias a objetos
que dejen de ser útiles, encargándose de ello éste y evitándose así que
se agote la memoria porque al programador olvide liberar objetos
21. inútiles o que se produzcan errores porque el programador libere áreas
de memoria ya liberadas y reasignadas.
3.4. ¿Por qué C#?
La plataforma .NET acepta varios lenguajes. Por ahora, C#, Visual Basic, C++ gestionado,
Nemerle, FORTRAN, Java, Python, etc. y con capacidad para aceptar prácticamente cualquier
lenguaje. Entonces la pregunta es, ¿porqué se eligió C# en lugar de cualquier otro lenguaje?
La razón fundamental es que C# se diseñó para la plataforma .NET y es capaz de utilizar
todo su potencial. También es cierto que es un lenguaje "limpio" en el sentido de que al no
tener que proporcionar compatibilidad hacia atrás se ha tenido más libertad en el diseño y se
ha puesto especial hincapié en la simplicidad. Por ejemplo, en C# hay un tipo de clase y
siempre se le aplica el recolector de basura mientras que en C++ gestionado hay dos tipos de
clases, una a la que se aplica el recolector y otra a la que no.
4. Tecnología ASP .NET Y AJAX
4.1. ASP .NET
4.1.1. Introducción
La transformación que ha sufrido la Web en los últimos años ha sido espectacular. Al
principio se usaba principalmente como escaparate publicitario, con información estática, y
podemos observar que hoy día se ha convertido en un medio sobre el que poder realizar
operaciones comerciales, transacciones de datos entre aplicaciones remotas etc.
Para hacer esto posible, las tecnologías de desarrollo han tenido que evolucionar y adaptarse
a los nuevos requerimientos que exigen este tipo de aplicaciones.
Este es el caso de ASP .NET (Martín Sierra, 2007) que a día de hoy desde su aparición en el
año 2001 se ha convertido en una de las tecnologías más potentes y completas para el
desarrollo de aplicaciones en la Web.
Hoy en día, resulta bastante común implementar la interfaz de una aplicación utilizando
páginas Web en vez de las ventanas y los controles específicos de un sistema operativo
concreto. En lugar de escribir una aplicación para un sistema operativo concreto, como puede
ser Windows, en muchas situaciones es preferible crear aplicaciones Web a las que se accede a
través de Internet.
Se denominan aplicaciones Web a aquellas aplicaciones cuya interfaz se construye a partir de
páginas Web. Las páginas Web no son más que ficheros de texto en un formato estándar
denominado HTML. Estos ficheros se almacenan en un servidor Web al cual se accede
utilizando el protocolo http.
Para utilizar una aplicación Web desde una máquina concreta, basta con tener instalado un
navegador Web en esa máquina, ya sea éste el Internet Explorer de Microsoft, el Netscape
Navigator o cualquier otro navegador. Desde la máquina cliente, donde se ejecuta el
navegador, se accede a través de la red al servidor Web donde está alojada la aplicación y, de
22. esa forma, se puede utilizar la aplicación sin que el usuario tenga que instalarla previamente en
su máquina.
4.1.2. ¿Qué es ASP .NET?
Durante muchos años, los desarrolladores han estado utilizando la tecnología ASP para
generar páginas Web dinámicas. De modo similar a ASP, ASP .NET se ejecuta en el servidor
Web y proporciona una forma de desarrollar sitios Web dinámicos, personalizados y de rico
contenido.
ASP .NET es la nueva tecnología propuesta por Microsoft para enfrentar los desafíos de
interconexión entre dispositivos y sitios Web del nuevo milenio. En versiones anteriores de
Visual Basic, las opciones brindadas para la programación de estos últimos, no contaba con las
ventajas que ofrecían otras herramientas, como visual InterDev. En esta versión, ahora se
cuenta con un excelente editor de páginas para servidor activo ASP .NET y HTML, el cual viene
incluido por el entorno de desarrollo como diseñador natural. Adicionalmente se han agregado
varias características, a los efectos de que la programación de una aplicación para la Web
cuente con todas las funcionalidades del lenguaje, y además se efectúe en forma similar a
como se hacía bajo el modelo Windows.
Las técnicas brindadas para dibujar un formulario de Windows no difieren en mucho de las
ofrecidas para realizar la misma tarea en una página Web. Ahora se cuenta con un nuevo tipo
de proyecto llamado aplicación Web ASP .NET, el cual hace uso de formularios Web o Web
Forms, los cuales cumplen un rol similar al de los formularios estándares en el modelo
Windows.
Básicamente un formulario Web es exhibido de igual forma que uno Windows, pero, en
realidad, el primero es gestionado internamente como una página de servidor activo y etiquetas
HTML. La creación de la interfaz es muy sencilla, ya que basta con crear un nuevo proyecto de
este tipo, y posteriormente arrastrar los controles del cuadro de herramientas, para así crear
una nueva interfaz gráfica para la Web.
Es una de las piezas esenciales de Microsoft .NET Framework y proporciona la infraestructura
para aplicaciones .NET Web dinámicas fácilmente desarrolladas. No es sólo el sucesor de
páginas Active Server (ASP) de Microsoft, es una plataforma unificada de desarrollo Web que
proporciona a los desarrolladores los servicios necesarios para generar aplicaciones Web de
empresa. Incluye grandes mejoras con respecto a ASP e incluye muchas características nuevas.
4.1.3. Ventajas ASP .NET
ASP .NET ofrece varias ventajas importantes entre las que destacamos:
• Compatibilidad con herramientas de primer nivel: La
edición de los controles de servidor de arrastrar y colocar y la
implementación automática son sólo algunas de las
características que proporciona esta eficaz herramienta.
o El marco de trabajo de ASP .NET se complementa con
un diseñador y una caja de herramientas muy
23. completos en el entorno integrado de programación
IDE de Visual Studio.
• Mejor rendimiento: ASP .NET es un código de Common
Language Runtime compilado que se ejecuta en el servidor. A
diferencia de sus predecesores, ASP .NET puede aprovechar las
ventajas del enlace anticipado, la optimización nativa y los
servicios de caché desde el primer momento. Esto supone un
incremento espectacular del rendimiento antes de siquiera
escribir una línea de código.
• Eficacia y flexibilidad: La eficacia y la flexibilidad de toda esa
plataforma se encuentra disponible para los programadores de
aplicaciones Web. La biblioteca de clases de .NET Framework,
la Mensajería y las soluciones de Acceso a datos se encuentran
accesibles desde el Web de manera uniforme. ASP .NET es
también independiente del lenguaje, por lo que puede elegir el
lenguaje que mejor se adapte a la aplicación o dividir la
aplicación en varios lenguajes.
• Simplicidad: ASP .NET facilita la realización de tareas
comunes, desde el sencillo envío de formularios y la
autenticación del cliente hasta la implementación y la
configuración de sitios.
• Facilidad de uso: ASP .NET emplea un sistema de
configuración jerárquico, basado en texto, que simplifica la
aplicación de la configuración al entorno de servidor y las
aplicaciones Web. Debido a que la información de
configuración se almacena como texto sin formato, se puede
aplicar la nueva configuración sin la ayuda de herramientas de
administración local
• Escalabilidad y disponibilidad: ASP .NET se ha diseñado
teniendo en cuenta la escalabilidad, con características
diseñadas específicamente a medida, con el fin de mejorar el
rendimiento en entornos agrupados y de múltiples
procesadores. Además, el motor de tiempo de ejecución de
ASP .NET controla y administra los procesos de cerca, por lo
que si uno no se comporta adecuadamente, se puede crear un
proceso nuevo en su lugar, lo que ayuda a mantener la
aplicación disponible constantemente para controlar solicitudes.
• Posibilidad de personalización y extensibilidad: ASP .NET
presenta una arquitectura bien diseñada que permite a los
programadores insertar su código en el nivel adecuado. De
hecho, es posible extender o reemplazar cualquier
subcomponente del motor de tiempo de ejecución de ASP .NET
con su propio componente escrito personalizado.
• Seguridad: Con la autenticación de Windows integrada y la
configuración por aplicación, se puede tener la completa
seguridad de que las aplicaciones están a salvo.
4.1.4. Funciones más importantes de ASP .NET
24. En el proyecto se han usado algunas de estas funciones o variables usando el espacio
de nombres System.Web para poder disponer de una variedad de clases que darán
funcionalidad a nuestras aplicaciones Web.
• HttpResponse: Cuando se necesita mandar información al
cliente como cookies, salida HTML y direcciones se utiliza la
clase HttpResponse mediante el objetoResponse y el
método Write.
• HttpRequest: Cuando se solicita información del explorador
de una computadora cliente, tal como cookies, valores de las
formas o una consulta se utiliza la claseHttpRequest mediante
el objeto Request. Cabe mencionar que en ASP .NET muchas
de las funciones de solicitud se hacen en forma automática,
por esto se puede prescindir de éste para obtener valores,
aunque sí se utiliza para algunas otras funciones.
• IsClientConnected() As Bolean: Debido a que los procesos
se realizan en el servidor, éstos pueden tomar tiempo y es
necesario saber si el usuario sigue conectado, la
función IsClienteConnected regresa un valor verdadero o falso
que indica el resultado, se utiliza en conjunción con el
objeto Response.
• Objeto.Redirect(“http://ProyectoFinDeCarrara.aspx”):
El objeto Response tiene un método llamado Redirect el cual
dirige la página actual hacia otra; sin embargo, hay que tomar
en cuenta que cuando el navegador de Internet encuentra una
página que dirige hacia otra, el servidor envía la orden: “se
debe de ir a otra página”, después de esto el explorador toma
la dirección destino y va hacia esa página, por lo tanto este
método ocasiona una ida y vuelta extra al servidor.
Variables del servidor
El servidor cuenta con variables especiales que pueden ser consultadas por el usuario, estas
variables pueden regresarnos información como por ejemplo la versión de navegador de
Internet del que se está haciendo la petición, la versión del servidor Web, etc.
La propiedad ServerVariables se utiliza para esta operación.
Por ejemplo, para obtener el navegador utilizado:
Request.ServerVariables(“HTTP_USER_AGENT”)
Para obtener la versión de servidor
Request.ServerVariables(“SERVER_SOFTWARE”)
Si queremos saber todas las variables de la propiedad ServerVariables, asignamos a una
variable la siguiente instrucción: Variable=Request.ServerVariables(0)
25. Variables de aplicación: Cada vez que una página es solicitada se regenera completamente.
Es por eso que no guarda valores, y se utilizan las variables de aplicación, en las que no se
permiten almacenar valores que puedan ser compartidos por todos los usuarios que acceden a
la aplicación.
El objeto application permite que se almacene información dentro de la memoria del servidor
Web, mientras que el servicio de IIS no sea detenido.
Variables de sesión: Cuando se necesita guardar información por usuario, entonces se
utilizan las variables de sesión. La diferencia de este tipo de variables contra las de aplicación es
que las variables de sesión tienen un conjunto de valores por usuario y las de aplicación son
globales, las comparten todos los usuarios que acceden a la aplicación.
El valor de estas variables son mantenidas mientras la sesión no termine, ya sea que el
tiempo máximo de espera se alcance o el usuario cambie a otra página que no pertenezca a la
misma aplicación.
Es importante establecer lo que es una sesión para ASP .NET, cada ventana del navegador
de Internet abierta es interpretada como una sesión. Por ejemplo, si tenemos tres ventanas del
navegador abiertas en la misma computadora, será interpretada por ASP .NET como tres
sesiones abiertas, sin embargo generalmente existe una sola ventana abierta del navegador de
Internet por usuario.
Lock y unlock
Los miembros Lock y Unlock se utilizan para que no existan problemas de concurrencia, ya
que se debe alterar una variable por sesión a la vez.
Inicializar con global.asax
Es posible inicializar variables de aplicación o de sesión en el archivo global.asax, si se
necesita guardar información se utilizan variables de aplicación o de sesión. En ASP .NET
existen varios eventos en la vida de la aplicación, algunos de éstos son:
• Eventos de aplicación: Los eventos de aplicación son
aquellos que son compartidos por todos los usuarios:
• Application_Start: Se ocasiona cuando el primer usuario trata
por primera vez de ingresar a la aplicación:
• Application_BeginRequest: Cuando un usuario solicita un
URL:
• Application_EndRequest: Cuando la solicitud ha sido
completada:
• Application_End: Se activa cuando ya no hay instancias de la
clase Global:
• Eventos de sesión: Los eventos de sesión son aquellos que
son exclusivos a un usuario:
• Session_Start: Es activado cuando una nueva sesión se va a
generar:
• Session_End: Se activa cuando termina una sesión.
26. 4.1.5. Formularios Web de ASP .NET
Son el marco de trabajo de la página de formularios Web de ASP .NET es un modelo de
programación escalable que puede utilizarse en el servidor para generar páginas web
dinámicamente.
Concebido como una evolución lógica de ASP, ASP .NET proporciona compatibilidad
sintáctica con las páginas existentes, el marco de trabajo de formularios web ASP .NET se ha
diseñado específicamente para tratar varias deficiencias clave del modelo anterior. En
particular, proporciona:
• Capacidad para que los programadores puedan estructurar
limpiamente la lógica de la página de forma ordenada (no
revuelta).
• Capacidad para que las herramientas de desarrollo
proporcionen un fuerte soporte de diseño. El código ASP
existente es opaco para las herramientas.
• Capacidad para crear y utilizar controles de la interfaz de
usuario reutilizables que puedan encapsular funcionalidades
comunes y, así, reducir la cantidad de código que tiene que
escribir el programador de una página.
Desarrollar aplicaciones web ASP .NET sobre el .NET Framework es similar a desarrollar
aplicaciones Windows. El componente fundamental de ASP .NET es el formulario web form. Un
formulario web form es la página web que los usuarios visualizan en un navegador. Una
aplicación web ASP .NET consta de uno o más formularios web form. Un web form es una
página dinámica que puede acceder a recursos del servidor.
Por ejemplo, una página web tradicional puede ejecutar scripts en el cliente para realizar
tareas básicas. En cambio, un formulario web form ASP .NET también puede ejecutar código en
el lado servidor para acceder a una base de datos, generar formularios web forms adicionales,
o aprovechar la seguridad incorporada en el servidor.
Además, como un formulario web form ASP .NET no depende de utilizar scripts en el cliente,
no depende del tipo de navegador del cliente o del sistema operativo. Esta independencia
permite desarrollar un único formulario Web Form que puede ser visualizado prácticamente en
todos los dispositivos que dispongan de acceso a Internet y de un navegador Web.
Debido a que ASP .NET forma parte del .NET Framework, podemos desarrollar aplicaciones
web ASP .NET en cualquier lenguaje basado en .NET.
Las páginas de formularios Web de ASP .NET consisten en archivos de texto con una
extensión de nombre de archivo.aspx. Pueden implementarse por todo un árbol de directorio
raíz virtual IIS.
Cuando un explorador cliente solicita recursos.aspx, el motor en tiempo de ejecución de ASP
.NET analiza y compila el archivo de destino en una clase de .NET Framework. Esta clase puede
utilizarse, a continuación, para procesar de forma dinámica las solicitudes entrantes.
27. 4.1.6. Arquitectura ASP .NET
Es una implementación completamente nueva de ASP, escrita de cero en C#. Utiliza
lenguajes de programación compilados como Visual Basic .NET, C#, incluso COBOL, para
escribir aplicaciones Web. Las aplicaciones son compiladas en el servidor, y las páginas son
generadas en HTML específicamente para el browser que hizo la invocación.
Se integra en la autenticación del sistema operativo Windows y permite una configuración a
nivel de aplicación.
Figura 6. Arquitectura ASP .NET
Los conceptos centrales de ASP .NET son: Separar presentación de lógica del negocio,
Usar servicios provistos por el .NET Framework, El código es compilado la primera vez que se
accede a una página, Administración de estado, Utilización de cualquier lenguaje, Actualizar
archivos mientras se está ejecutando la aplicación La ejecución utiliza el soporte del CLR. El
Código en Segundo plano se compila al código intermedio de MS (MS-IL). ASP .NET utiliza las
ventajas de la plataforma multilenguaje, con la Biblioteca de clases común (BCL) y el sistema
de tipos comunes (CTS).
4.1.7. Partes de una aplicación Web ASP .NET
Las partes de una aplicación Web ASP .NET incluyen:
• Formularios web forms o páginas.aspx: Los formularios
web forms y las páginas.aspx proporcionan la interfaz de
usuario para la aplicación web.
• Páginas con código trasero: Las páginas con código trasero
están asociadas a los formularios web forms y contienen el
código del servidor para el formulario web form.
• Archivos de configuración: Los archivos de configuración
son archivos XML que definen la configuración predeterminada
para la aplicación Web y para el servidor web. Cada aplicación
web tiene un archivo de configuración web.config. Además,
cada servidor web tiene un archivo machine.config.
28. • Archivo Global.asax: Los archivos global.asax contienen el
código necesario para responder a los eventos a nivel de
aplicación provocados por ASP .NET.
• Enlaces a servicios web XML: Los enlaces a servicios web
XML permiten a la aplicación Web enviar y recibir datos de un
servicio web XML.
• Conectividad a bases de datos: La conectividad a bases de
datos permite a la aplicación Web transferir datos desde y
hacia fuentes de base de datos.
• Caché: El uso de caché permite a la aplicación web devolver
más rápidamente formularios Web forms y datos tras la
primera petición.
4.1.8. ¿Qué puedo hacer con ASP .NET?
ASP .NET es la tecnología que permite hacer formularios web y servicios web en la
plataforma NET, incorporado en el Framework. A través de ASP .NET se puede construir
soluciones desde Visual Studio NET, desde el desarrollo de páginas y formularios web hasta
servicios web.
El formulario Web es una página dinámica que puede acceder a los recursos del servidor o a
recursos de otros servidores, por ejemplo, una página ASP .NET puede ejecutar código para
acceder a sql Server y luego armar una respuesta al usuario como código html Una de las
principales ventajas de ASP .NET es que como el código se ejecuta del lado del servidor, la
respuesta puede adaptarse al explorador de internet del usuario.
Los servicios web son componentes que pueden ser accedidos desde la Intranet o desde
Internet, y permiten crear aplicaciones distribuidas, es decir, aplicaciones centralizadas en un
objetivo específico, pero que requieren de servicios externos a la aplicación para
complementarse.
ASP NET es uno de estándares, el desarrollo de soluciones web usado por muchos
desarrolladores en todo el mundo.
4.2. Ajax
Para la implementación de este proyecto se ha usado esta técnica de desarrollo Web, usando
algunos de los controles que nos ofrece Ajax control Toolkit.
4.2.1. Introducción Ajax
En 2005 Microsoft presenta Ajax 1.0 (Asynchronous JavaScript And XML), una técnica de
desarrollo Web para crear aplicaciones interactivas que hacen que la experiencia del usuario
cada vez sea mejor. Cabe mencionar que Ajax es una técnica que viene desarrollándose por
varias empresas. Junto a esta tecnología también anunció Ajax control ToolKit una suite de
variados controles que implementan toda la funcionalidad de Ajax.
Puntualizando diremos que Ajax no es un leguaje de programación, no es un Entorno de
Desarrollo, no es una tecnología y no es un script. Ajax es una técnica de programación que
29. implementa un conjunto de tecnologías que hacen que una página funcione de manera
interactiva, esto es que no veamos el fastidioso parpadeo a la hora de cargar otra página o
podamos ver algunos efectos de desplazamiento que antes sólo lograba flash.
En realidad Ajax no es una tecnología, sino la unión de varias tecnologías que juntas pueden
lograr cosas realmente impresionantes como GoogleMaps, Gmail el outlook web access o
algunas otras aplicaciones muy conocidas: Ajax, en resumen, es el acrónimo para Asynchronous
JavaScript + XML y el concepto es: cargar y renderizar una página, luego mantenerse en esa
página mientras scripts y rutinas van al servidor buscando, en background, los datos que son
usados para actualizar la página sólo renderizando la página y mostrando u ocultando porciones
de la misma.
Podemos concretar que es una técnica de desarrollo web para crear aplicaciones interactivas.
Éstas se ejecutan en el cliente, es decir, en el navegador del usuario, y mantiene comunicación
asíncrona con el servidor en segundo plano. De esta forma es posible realizar cambios sobre la
misma página sin necesidad de recargarla. Esto significa aumentar la interactividad, velocidad y
usabilidad en la misma.
4.2.2. Historia de Ajax
A pesar de que el término "Ajax" fuese creado en 2005, la historia de las tecnologías que
permiten Ajax se remonta a una década antes con la iniciativa de Microsoft en el desarrollo de
scripting remoto. Sin embargo, las técnicas para la carga asíncrona de contenidos en una
página existente sin requerir recarga completa remontan al tiempo del elemento iframe
(introducido en Internet Explorer 3 en 1996) y el tipo de elemento layer (introducido en
Netscape 4 en 1997, abandonado durante las primeras etapas de desarrollo de Mozilla).
Ambos tipos de elemento tenían el atributo src que podía tomar cualquier dirección URL
externa, y cargando una página que contenga javascript que manipule la página paterna,
pueden lograrse efectos parecidos al Ajax.
Microsoft's Remote Scripting (o MSRS, introducido en 1998) resultó un sustituto más
elegante para estas técnicas, con envío de datos a través de un applet Java el cual se puede
comunicar con el cliente usando JavaScript. Esta técnica funcionó en ambos navegadores,
Internet Explorer versión 4 y Netscape Navigator versión 4.
La comunidad de desarrolladores Web, primero colaborando por medio del grupo de noticias
microsoft.public.scripting.remote y después usando blogs, desarrollaron una gama de técnicas
de scripting remoto para conseguir los mismos resultados en diferentes navegadores. Los
primeros ejemplos incluyen la librería JSRS en el año 2000, la introducción a la técnica
imagen/cookie en el mismo año y la técnica JavaScript bajo demanda (JavaScript on Demand)
en 2002. En ese año, se realizó una modificación por parte de la comunidad de usuarios al
Microsoft's Remote Scripting para reemplazar el applet Java por XMLHttpRequest.
4.2.3. Tecnologías que conforman Ajax
Las tecnologías que conforman Ajax son las siguientes:
30. • XHTML (o HTML) y hojas de estilos en cascada (CSS). Estas dos
tecnologías trabajan en la presentación de la página.
• Document Object Model (DOM). Nos permite interactuar con la
información presentada por medio de un Script.
• El objeto XMLHttpRequest para intercambiar datos
asincrónicamente con el servidor Web. Esto es mandar información por
atrás sin que el usuario se percate de esto.
• XML es el formato usado comúnmente para la transferencia de vuelta
al servidor, aunque cualquier formato puede funcionar, incluyendo
HTML preformateado, texto plano, JSON y hasta EBML.
Figura 7. Tecnologías agrupadas bajo el concepto de AJAX
Desarrollar aplicaciones Ajax requiere un conocimiento avanzado de todas y cada una de las
tecnologías anteriores.
En las aplicaciones web tradicionales, las acciones del usuario en la página (pinchar en un
botón, seleccionar un valor de una lista, etc.) desencadenan llamadas al servidor. Una vez
procesada la petición del usuario, el servidor devuelve una nueva página html al navegador del
usuario.
4.2.4. A favor y en contra de AJAX
A continuación vamos a exponer los aspectos más positivos y negativos de usar esta
tecnología en nuestras aplicaciones, describiendo brevemente cada una de ellas.
4.2.4.1. A favor de AJAX
• Facilidad de manejo del usuario: El usuario tiene un mayor
conocimiento de las aplicaciones de escritorio. Se reduce el
tamaño de la información intercambiada
• Mayor interactividad: Recuperación asíncrona de datos,
reduciendo el tiempo de espera del usuario. Responden más
rápidamente a las interacciones del usuario, ya que sólo
requiere enviar pequeñas peticiones al servidor, y se devuelven
respuestas relativamente cortas ya que no requieren la recarga
de toda la página
31. • Portabilidad entre plataformas: No requieren instalación de
plugins, applets de Java, ni ningún otro elemento. Las
aplicaciones de Ajax utilizan características bien documentadas
y compatibles con la mayoría de los navegadores
actuales. Aunque esta situación podría cambiar en el futuro, en
este momento, los usos de Ajax son efectivos entre
plataformas. Mientras que la plataforma de Ajax está más
restringida que la plataforma de Java, las aplicaciones actuales
de Ajax llenan con eficacia la parte de los Java applets.
• Interactividad: Las aplicaciones Ajax se ejecutan en la
máquina cliente, manipulando la página actual dentro de sus
navegadores usando métodos de document object model.
Puede ser usado para multitud de tareas como actualizar o
eliminar registros, expandir formularios Web, devolver
peticiones simples de búsqueda, o editar árboles de categorías;
todo sin tener la necesidad de tener que recargar toda la
página de html cada vez que se realiza un cambio.
Generalmente sólo requiere enviar pequeñas peticiones al
servidor, y se devuelven respuestas relativamente cortas.
4.2.4.2. En contra de AJAX
• Críticas de usabilidad: Una de las mayores críticas contra el
uso de Ajax en aplicaciones web es que puede fácilmente
acabar con el comportamiento normal del botón atrás del
navegador. Las diversas expectativas entre volver a una página
que se ha modificado dinámicamente y la vuelta a una página
estática pueden ser sutiles. Los usuarios normalmente esperan
que haciendo click en atrás mientras están en una aplicación
Web les llevará a la última página cargada, y en aplicaciones
Ajax lo más seguro es que esto no ocurra. Los desarrolladores
han implementado varias soluciones a este problema, muchos
de los cuales giraron alrededor de crear o usar iframe invisibles
para invocar los cambios que hacen que se genere el historial
usado por el botón atrás del navegador. Google maps, por
ejemplo, realiza búsquedas en un IFrame invisible y luego
inserta los resultados en la página web visible.
o Un problema relacionado es que las actualizaciones
dinámicas hacen difícil al usuario agregar a los
marcadores/favoritos un momento particular de la
aplicación. Existen soluciones a este problema, muchas
de las cuales utilizan el fragmento identificador del URL
(la parte de una URL precedida del signo '#' para no
perderla de vista, y permitir a los usuarios volver a ese
momento exacto.
• Tiempos de respuesta: El intervalo entre la petición del
usuario y la respuesta del servidor debe tenerse en cuenta
durante el desarrollo de ajax. Sin el feedback claro al usuario,
carga de datos rápida, y dirección apropiada del objeto
32. XMLHttpRequest los usuarios pueden experimentar esperas en
la intefaz de la aplicación Web, algo que los usuarios pueden
no esperar o comprender. Como soluciones a estas esperas,
frecuentemente se recomienda el uso de feedback visual para
informar al usuario de la actividad en segundo plano y/o
precarga de contenido y datos.
• JavaScript: Aunque Ajax no necesita ningún tipo de plug-in
para el navegador, requiere que los usuarios tengan el
JavaScript activado. Esto se aplica a todos los navegadores que
soportan esta tecnología excepto para Microsoft Internet
Explorer 6 y anteriores los cuales necesitan también tener el
ActiveX activado, ya que el objeto XMLHttpRequest está
implementado junto con el ActiveX en este navegador. Internet
Explorer 7, por otra parte, va a implementar esta interfaz como
un objeto JavaScript nativo y por tanto no se va a necesitar
ActiveX para que AJAX pueda funcionar con normalidad.
o Como ocurre con las aplicaciones dhtml, las de Ajax
deben de ser probadas rigurosamente para adaptarse
a los diferentes navegadores y plataformas. Han ido
apareciendo numerosas librerías de programación a
medida que Ajax ha ido madurando que pueden
ayudar en esta tarea.
• Nombre: Ha habido varias críticas en torno al término Ajax,
reclamando que adaptive path (el consultorio que creó la
palabra) u otros defensores lo usan como un vehículo de
marketing para técnicas antes usadas.
• Usabilidad: Comportamiento del usuario ante la
navegación. Puede modificar el comportamiento del botón
atrás del navegador, complica la agregación a los bookmark del
navegador un estado concreto, etc.
• Botón de volver atrás del navegador: Empleo de iframe
ocultos para almacenar el historial). Empleo de fragmento
identificador del URL (‘#’) y recuperación mediante JavaScript
• Problema al agregar marcadores / favoritos: en un
momento determinado de la aplicación: Empleo del fragmento
identificador del URL (‘#’) y recuperación mediante JavaScript
• Problemas al imprimir: páginas renderizadas dinámicamente
4.2.5. Usos de Ajax
Validación de datos de formularios en tiempo real: Identificadores de usuario, número
de serie, códigos postales u otro código especial que necesite validación en el lado del servidor
antes de ser enviado el formulario.
• Autocompletado : Direcciones de correo, nombres, ciudades.
• Operaciones de detalle: Obtener información más detallada de un
producto.
• GUI avanzadas: Controles en árbol, menús, barras de progreso.
33. Refresco de datos
• Notificaciones del servidor.
• Actualizar o eliminar registros.
• Expandir formularios web.
• Devolver peticiones simples de búsqueda.
• Editar árboles de categorías.
4.2.6. Funcionamiento Ajax
1. Usuario provoca un evento.
2. Se crea y configura un objeto XMLHttpRequest.
3. El objeto XMLHttpRequest realiza una llamada al servidor.
4. La petición se procesa en el servidor.
5. El servidor retorna un documento XML que contienen el resultado.
6. El objeto XMLHttpRequest llama a la función callback() y procesa el
resultado.
7. Se actualiza el DOM de la página asociado con la petición con el
resultado devuelto.
4.2.7. Ejemplos de Aplicaciones existentes en AJAX
• Google suggest. A medida que se escribe en el formulario de
búsqueda, google "sugiere" los términos mas buscados en una lista
desplegable. Esa información que se muestra, son consultas
permanentes a la base de datos de google, pero en segundo plano,
logrando mantener al cliente en la misma página.
• Google maps. Al mover el mapa con el ratón, los mapas que no
estaban en la pantalla van apareciendo sin cambiar al cliente de
página. En el momento que se mueven los mapas, google va enviando
los mapas que se van necesitando.
4.2.8. ASP .NET Ajax control toolkit
4.2.8.1. Introducción.
ASP .NET 2.0 supone una enorme evolución en el mundo de los lenguajes Web. Una mayor
potencia, fiabilidad y eficiencia van cogidos de la mano de una gran capacidad de hacer la vida
más fácil a los programadores Web: lo que con otras arquitecturas de trabajo web nos costaría
sudor y lágrimas, con el framework ASP .NET 2.0 ya viene por defecto o requiere una sencilla
instalación.
Y es que hoy por hoy está muy de moda Ajax (Asynchronous JavaScript and XML), con la
que se construyen las modernas web 2.0: “idas y vueltas” entre el servidor Web y el navegador
de nuestro visitante sin que la página se recargue. De este modo los programas de escritorio
quedan cada vez más obsoletos frente a los programas web.