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.
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.
Se trata, por tanto, de conseguir que el sitio Web se convierta en un lugar de obligada
consulta tanto para profesionales de la materia como para la realización de los inventarios y
programas por parte de usuarios, con la gran ventaja de que se puede acceder cómodamente
desde casa con sólo poseer conexión a Internet.

1.     Etapas de desarrollo del proyecto

     Vamos a dividir el proyecto en 4 etapas, que pasaremos a describir:

              •   Estudio      de    la    plataforma. Se     utilizará   la   plataforma    .NET
                  de Microsoft© (Herbert, 2002) y los distintos servicios que provee a la hora del
                  desarrollo de aplicaciones, así como el estudio de herramientas como Ajax y el
                  lenguaje C# (Ceballos, 2007).
              •   Estudio de Técnicas de Bases de datos. Se estudiarán/repasarán SQL y las
                  principales técnicas de diseño de tablas.
              •   Implementación de la aplicación. Aplicando técnicas y estándares
                  estudiados anteriormente se desarrollará una aplicación visual para la
                  evaluación psicosocial de deportistas y entornos deportivos. Instalación y
                  documentación de las diferentes aplicaciones útiles que usemos para el
                  desarrollo de nuestra aplicación.
              •   Alojo de la aplicación en un servidor Web permanente, para que se
                  pueda tener acceso público a él mediante cualquier navegador. Pero antes del
                  alojo de la aplicación se han realizado varias pruebas a la aplicación para
                  solucionar posibles errores que pudieran existir en casos extremos o poco
                  usuales

1.2.     Medios materiales y herramientas que se pretenden utilizar

                      •   Conexión a Internet, pues la aplicación es de acceso remoto.
                      •   Programa de análisis y metodología orientada a objetos MagicDraw.
                      •   Se desarrollara en un portátil TravelMate 243LC (Intel Celaron 2.5GHz,
                          256 MB DDR SDRAM, 30 GB disco duro ultra ATA/100).
                      •   Microsoft Visual Studio 2005.
                      •   Microsoft Word y Access.

2.     Introducción a la plataforma .NET

2.1.     Introducción

   La aparición de .NET a mediados del año 2001 ha supuesto un antes y un después en el
desarrollo de software para entornos Microsoft. Pues más que una nueva versión o adaptación
de las tecnologías existentes, la arquitectura .NET representa un cambio de filosofía en la
construcción de aplicaciones.

   Antes de la llegada de .NET, las tecnologías de desarrollo proporcionadas por Microsoft se
encontraban bastante dispersas, de modo que cada tipo de aplicación requería su propio
lenguaje de programación, su propio entorno de desarrollo. Precisamente, este ha sido uno de
los grandes logros de .NET, el proporcionar un marco de trabajo común para todos los tipos de
desarrollo.
Por .NET entendemos el conjunto de tecnologías Microsoft destinadas al desarrollo        de
aplicaciones informáticas. Estas tecnologías se basan en la utilización de un modelo         de
desarrollo unificado, lo que significa que podrán ser utilizadas tanto para el desarrollo    de
aplicaciones que se ejecuten en entorno Windows, como para las que se vayan a ejecutar       en
entorno Web (como este proyecto) o incluso para aquellas cuyo entorno de ejecución           se
encuentra en un dispositivo electrónico.

    Podemos decir que .NET es un programa de software que conecta información, usuarios,
sistemas y dispositivos. Incluye clientes, servidores y herramientas para programadores, y está
formado por:

                    •   Windows .NET Framework: permite generar y ejecutar todo tipo de
                        software, incluidas aplicaciones basadas en web, aplicaciones cliente
                        inteligentes y servicios web XML. Estos componentes facilitan la
                        integración, ya que comparten datos y funcionalidad a través de una
                        red mediante protocolos estándar independientes de la plataforma,
                        como XML, SOAP y HTTP.
                    •   Varias herramientas para programadores, como Microsoft© Visual
                        Studio .NET (David y Julián, 2002) que ofrece un entorno de desarrollo
                        integrado (IDE) para sacar el máximo partido a la productividad de los
                        programadores con .NET Framework.
                    •   Un      conjunto     de     servidores,    incluidos Microsoft Windows
                        Server, Microsoft SQL Server y Microsoft BizTalk Server, que integran,
                        ejecutan, operan y administran servicios Web XML y aplicaciones
                        basadas en Web.
                    •   Software cliente, como Windows XP, Windows CE o Microsoft Office XP,
                        que ayuda a los programadores a ofrecer una experiencia positiva para
                        el usuario a través de la amplia familia de dispositivos y productos
                        existentes.

2.2.   Versiones .NET

  Hasta la fecha, se han sucedido cuatro versiones de .NET.

                    •   La primera versión la 1.0 fue lanzada a mediados de 2001. En esta
                        versión se produjo un cambio sustancial, puesto que supuso la
                        introducción de la plataforma .NET de Microsoft.
                    •   Visual Studio .NET 2002 supuso también la introducción del lenguaje
                        C#, un lenguaje nuevo diseñado específicamente para la plataforma
                        .NET, basado en C++ y Java. Se presentó también el lenguaje J#
                        sucesor de J++ el cual, en lugar de ejecutarse en una máquina virtual
                        de Java, se ejecuta únicamente en el framework .NET. El lenguaje
                        Visual Basic fue remodelado completamente y evolucionó para
                        adaptarse a las nuevas características de la plataforma.
                    •   A esta le sucedió la versión 1.1. Visual Studio .NET 2003 supone una
                        actualización menor de Visual Studio .NET. Se actualiza el .NET
                        Framework a la versión 1.1. También se añade soporte con el fin de
                        escribir aplicaciones para determinados dispositivos móviles, ya sea con
                        ASP .NET o con el .NET Compact Framework. Además el compilador de
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
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.
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
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.
•   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.
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.
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
•   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.
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.
•   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.
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.
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++.
•   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
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
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.
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
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
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
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
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)
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.
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.
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.
•   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
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:
•    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
•   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
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.
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.
El único problema de Ajax es que, si bien no es la panacea de la dificultad, sí requiere unos
conocimientos medianamente avanzados del programador Web, así como una gran capacidad
de organización de código.

   Ante todo esto, la respuesta de ASP .NET 2.0 ha sido contundente: ASP .NET AJAX. ASP
.NET Ajax es una nueva tecnología Web que se presenta como extensión gratuita de ASP .NET
2.0, añadiéndole funcionalidades AJAX que eliminan de un plumazo su dificultad de uso, y
siendo independiente del navegador con que accedamos.

   Ahora los programadores Web no necesitan saber absolutamente nada de javascript o XML
para crear potentes aplicaciones Web 100% AJAX.

4.2.8.2.   Qué es el ASP .NET Ajax control toolkit

   El ASP .NET Ajax control toolkit nace como un proyecto conjunto entre la comunidad de
programadores y Microsoft. Está desarrollado en base a ASP .NET Ajax y contiene una serie de
controles Web y extendedores con los que podremos utilizar las avanzadas características de
ASP .NET AJAX sin más que un arrastre de ratón. Del mismo modo, con su descarga
disponemos de ejemplos de uso, así como del propio código fuente de los controles. Y lo mejor
de todo es que es totalmente gratuito.

   Vamos a distinguir entre controles web y extendedores, donde los primeros tienen una
entidad por sí mismos, mientras que los segundos únicamente añaden un comportamiento a un
control Web existente.

   Se trata de una serie de pequeñas funcionalidades que cualquier webmaster, en su historia
de programador, ha utilizado o deseado para sus webs.

   Estos controles van desde un simple botón con una alerta asociada, hasta un complejo panel
que podemos arrastrar por la pantalla; en ambos casos, mandando y recogiendo información
entre el cliente y el servidor sin ningún tipo de recarga de página. Su uso hará que nuestra Web
sea mucho más atractiva y simpática al usuario a la par que potente y efectiva.

4.2.8.3.   Controles y extendedores Ajax control toolkit

  A continuación mostramos algunos de ellos, los cuales han sido usados en nuestro proyecto.

                            •   Accordion
                            •   AutoComplete: Se       extiende    en    un    textbox     para
                                completar alguna palabra, cuenta con un combobox el cual se
                                basa en un webservice. Hace desplegar palabras que empiezan
                                con el prefijo tecleadas en el textbox. Este entendedor se ha
                                usado en el formulario “administrar datos personales” a la hora
                                de buscar a un usuario por el nombre de usuario.
                            •   AlwaysVisibleControl        Extender: Descripción:      el     l
                                AlwaysVisibleControl es uno de los controles Web del ASP .NET
                                Ajax control toolkit más simples. Su funcionalidad consiste en
                                dejar clavado el contenido en un punto específico de la página.
                                Un ejemplo sería el que cierto mensaje se muestre siempre en
la parte inferior derecha de nuestra página, y que se mantenga
                               en la misma posición de la pantalla del usuario cuando se haga
                               scroll sobre la página.
                           •   Se ha usado en la aplicación modrian del proyecto a la hora de
                               enseñar la paleta de colores y el panel con el tiempo de
                               espera.
                                    o Animation
                                    o CascadingDropDown
                                    o CollapsablePanel
                                    o ConfirmButton
                                    o DragPanel
                                    o DropDown
                                    o DropShadow
                                    o DynamicPopulate
                           •   FilteredTextBox: El FilteredTextBox extiende       al TextBox de
                               modo que podemos definir qué tipo de caracteres permitimos
                               que escriba el usuario. Se ha usado en los formularios “registro
                               de usuarios” y “registro centros” para controlar que los campos
                               introducidos son los correctos, Por ejemplo para controlar que
                               en el campo edad sólo se introducen números y no otro tipo de
                               caracteres que no sean dígitos. Elegiremos entre estas
                               configuraciones y sus múltiples combinaciones:
                           •   Numbers: todos los números.
                           •   LowercaseLetters: letras minúsculas.
                           •   UppercaseLetters: letras mayúsculas.
                           •   Custom: los caracteres que definamos.
                           •   HoverMenu
                           •   ModalPopup : El ModalPopup es otro ejemplo de potente
                               funcionalidad en muy pocas líneas de código. Con éste,
                               conseguimos el efecto de mostrar contenido deshabilitando la
                               interacción con el resto de la página. Podemos emular el efecto
                               del famoso “window.open(...)” de Javascript sin necesidad de
                               salir de la página en que estamos ni de abrir una nueva
                               ventana del navegador.

   Imaginemos que el usuario presiona el botón “Solución”, de nuestros cuestionarios y de
repente la página se oscurece y aparece en el centro un cuadro donde nos informa de un
posible error, todo ello sin salir de la página en que estamos y sin poder hacer nada con el
resto de elementos de ésta. Así pues, el usuario puede elegir entre cancelar para volver donde
estaba antes o presionar Aceptar, activando una llamada a una función javascript que hayamos
definido.

   Se ha usado en casi todos los formularios de nuestro proyecto para informar de un posible
error o pedir datos al usuario.

                           •   MutuallyExclusiveCheckBox
                           •   NoBot
                           •   NumericUpDown
                           •   PagingBulletedList
•   PasswordStrength
                             •   PopupControl
                             •   Rating
                             •   ReorderList
                             •   ResizableControl
                             •   RoundedCorners
                             •   Slider
                             •   TextBoxWatermark
                             •   ToggleButton
                             •   ValidatorCallout

5.     Desarrollo de la aplicación

5.1.    Descripción de la aplicación

  MenPas es una herramienta web para la evaluación de deportistas y entornos deportivos,
implementada en la plataforma .NET en el lenguaje C#.

    Nos ofrece un interfaz grafica fácil de usar, permitiéndonos realizar determinados
cuestionarios tanto a nivel individual como a nivel organizacional. Podemos elegir entre
cuestionarios de ansiedad, personalidad, de estados de humor, de estrés, utilizar aplicaciones
como efecto stroop o modrian, quedando todos esos resultados guardados en la base de datos
para un posterior estudio estadístico y proporcionándonos las soluciones al instante de la
resolución del cuestionario.

   Cada uno de los cuestionarios consta de una documentación donde el usuario puede
consultar las características de dicho cuestionario, las instrucciones o una breve historia sobre el
autor del mismo.

   El usuario que tenga perfil de administrador, puede consultar los resultados guardados en la
base de datos para cada uno de los cuestionarios, donde puede elegir o bien obtener las
soluciones de un determinado usuario para un cuestionario concreto, u obtener los resultados,
por grupo de categorías, pudiendo seleccionar por nacionalidad, nivel de estudios, estado civil,
edad entre otras.

   Una vez seleccionado al usuario o la categoría, el administrador puede consultar una tabla
que contiene los valores estadísticos relacionados con esos datos, mostrándose también unas
graficas relacionadas con esos valores estadísticos. También tiene la opción de poder exportar
los resultados obtenidos a ficheros de Microsoft Word o Excel.

   Se le proporcionan las herramientas necesarias para el control de la aplicación, a nivel de
usuarios, centros, y de cuestionarios. Dándole control total para eliminar, modificar o añadir los
valores que estime oportunos.

5.2.    Análisis del sistema

   Se ha usado UML que es una notación estándar para desarrollo de sistemas usando el
enfoque orientado a objeto. Es una notación en evolución, aún en desarrollo. Comenzó en 1994
como un esfuerzo de Grady Booch y James Rumbaugh para combinar sus metodologías
definiendo una notación estándar para ellas. Después, en 1995, Ivar Jacobson se unió al
equipo.

   El Lenguaje Unificado de Modelado es un lenguaje de modelado visual que se usa para
especificar, visualizar, construir y documentar artefactos de un sistema de software. Captura
decisiones y conocimiento sobre los sistemas que se deben construir.

   Se usa para entender, diseñar, hojear, configurar, mantener, y controlar la información sobre
el sistema.

   UML no es una metodología, es una notación obtenida desde experiencia en las más
populares metodologías OO actuales.

    Capta la información sobre la estructura estática y el comportamiento dinámico de un
sistema. Un sistema se modela como una colección de objetos discretos que interactúan para
realizar un trabajo que finalmente beneficia a un usuario externo.

  UML es sólo una notación, no dicta estándares para el proceso de desarrollo. Sin embargo,
UML condiciona dicho proceso de desarrollo al establecer los diagramas e información asociada
que debe representarse.

5.2.1.   Diagramas de casos de uso

   Casos de Uso es una técnica para capturar información de cómo un sistema o negocio
trabaja actualmente, o de cómo se desea que trabaje.

   No es realmente un enfoque orientado a objeto, más bien es un enfoque de construcción de
escenarios en los cuales se modelan los procesos del sistema. Sin embargo, constituye un buen
modo de llevar a cabo la fase de captura de requisitos del sistema al comienzo del análisis
orientado a objeto.

   Típicamente, se modela un caso de uso para cada escenario en el sistema o negocio. Cada
caso de uso puede estar definido simplemente por una sentencia de texto que describe el
escenario.

   También se puede describir mediante una secuencia de pasos ejecutados dentro del
escenario o condiciones pre-post para que el escenario comience o termine, respectivamente.

   Un Caso de Uso es representado por una elipse y describe una situación de uso del sistema
interactuando con actores.

   Un actor es un agente externo al sistema, alguien o algo que solicita un servicio al sistema o
actúa como catalizador para que ocurra algo, este término incluye a los seres humanos, así
como a otros sistemas informáticos y procesos.

    Durante el análisis del negocio se puede construir un diagrama de casos de uso que
represente al sistema y dibujar paquetes que representen los diferentes dominios (subsistemas)
del sistema.
Para cada paquete se puede crear un diagrama de Casos de Uso hijo donde se describen los
casos de uso del dominio. Esto se puede repetir refinando un Caso de Uso en un nuevo
diagrama hijo, y así sucesivamente creando una jerarquía de diagramas de Casos de Uso.




Figura 8. Diagrama casos de uso


   A continuación vamos a ver alguno de los casos de uso con más detalle, con el modelo que
se expone a continuación.


Nombre caso de uso                Identificar usuario


                                  El usuario debe de introducir en los campos nombre de usuario y
Descripción                       contraseña los valores que tenga asignados para tener acceso a
                                  la aplicación y poder realizar los cuestionarios


                                  El usuario debe estar registrado, y debe acceder a la página de
Precondiciones
                                  login de nuestra aplicación
El usuario introduce el nombre de usuario y contraseña y son los
                        correctos.
Escenario de éxito      El sistema acepta la clave.
                        El sistema nos muestra el tipo de cuestionario a realizar y la
                        parte administrativa si es administrador.


                        El usuario introduce el nombre de usuario y contraseña.
                        El sistema nos da un error, debido a que el nombre de usuario
Escenario de error 1    no esta registrado.
                        El sistema nos informa mediante un mensaje de que el nombre
                        de usuario no es el adecuado


                        El usuario introduce el nombre de usuario y contraseña.
                        El sistema nos da un error, debido a que la contraseña no es la
Escenario de error 2    correcta.
                        El sistema nos informa mediante un mensaje de que la
                        contraseña es incorrecta para ese usuario


                        El usuario deja en blanco uno de los dos campos o los dos.
Escenario de error 3    El sistema nos informa mediante un mensaje de error de lo
                        sucedido.




Nombre caso de uso     Registrar usuario


Descripción            El usuario debe rellenar los campos solicitados en el formulario


                       El usuario ha entrado en la ventana de registro de usuarios,
Precondiciones
                       porque no estaba registrado en nuestra aplicación.


                       El usuario rellena cada uno de los campos que se encuentran en el
                       formulario de registro de usuarios, el nombre de usuario no
Escenario de éxito
                       coincide con uno ya registrado en nuestra base de datos.
                       Los campos numéricos son rellenados correctamente


                       El nombre de usuario introducido ya está registrado, por lo que
Escenario de error1
                       debemos cambiar dicho nombre


                       Hay campos que están vacíos y son obligatorios para poder
Escenario de error2
                       registrarse en nuestra aplicación. El usuario deberá rellenar los
campos que se dejaron en blanco


                      No se ha introducido un correo electrónico correcto al no
Escenario de error3
                      pertenecer el símbolo @ al correo electrónico.




Nombre caso de uso        Hacer cuestionario


                          El usuario ya registrado realiza uno de los cuestionarios
Descripción
                          elegidos de nuestra aplicación


Precondiciones            El usuario tiene que estar registrado


                          El usuario realiza el cuestionario sin dejar en blanco o
                          seleccionar la respuesta para cada una de las afirmaciones.
Escenario de éxito
                          Presiona el botón Solución.
                          Se muestran los resultados obtenidos


                          El usuario deja casillas sin rellenar
                          Presiona el botón solución
Escenario de error
                          Se muestra un mensaje de error informándonos de que se han
                          dejado casillas sin rellenar.




Nombre caso de uso    Crear nuevo centro


                      Rellenar una serie de campos sobre los datos del centro sobre el
Descripción
                      que se va a realizar el cuestionario organizacional


                      El usuario debe de estar registrado y haber elegido la opción de
Precondiciones        cuestionarios organizacionales para poder rellenar los campos
                      solicitados en el formulario.


                      El usuario rellena cada uno de los campos que se encuentran en el
                      formulario de registro de centros,
                      El nombre del centro no coincide con uno ya existente en nuestra
Escenario de éxito
                      base de datos.
                      Los campos numéricos son rellenados correctamente.
                      No se deja ningún campo en blanco.
El nombre del centro introducido ya está registrado, por lo que
Escenario de error 1
                            debemos cambiar dicho nombre


                            Hay campos que están vacíos y son obligatorios para poder
Escenario de error 2        registrarse en nuestra aplicación. El usuario deberá rellenar los
                            campos que se dejaron en blanco




Nombre caso de uso          Modificar datos


                            Se pueden modificar los datos existentes en las tablas, en los
Descripción
                            formularios administrativos


Precondiciones              Tener perfil de administrador y entrar en la aplicación.


                            El administrador pulsa la opción de modificar, los campos se
                            transforman en editables, modificando los campos que estime
Escenario de éxito          oportuno.
                            Para completar la acción, hay que pulsar sobre actualizar,
                            guardándose en la base de datos los datos modificados


                            Deja algún campo obligatorio sin rellenar
Escenario de error 1
                            Se muestra mensaje de error


5.2.2.   Diagrama de clases

  El diagrama de clases es el diagrama principal para el análisis y diseño estático. Un diagrama
de clases presenta las clases y objetos del sistema con sus relaciones estructurales y de
herencia. La definición de clase u objeto incluye definiciones para atributos y métodos.

   Una clase describe un conjunto de objetos con estructura y comportamiento similares. Una
clase está definida por una serie de propiedades. Las más relevantes son los atributos y los
métodos.

    Una clase es representada como un rectángulo con cuatro compartimentos separados por
líneas horizontales.

   En el superior, se muestra el nombre de la clase y todas las propiedades generales, en el
siguiente se presenta la lista de atributos de la clase, a continuación se muestran los métodos.

   Cada atributo o método de una clase es antecedido por un indicador de visibilidad,
especificado en cuadro de diálogo que define al método o atributo.
Figura 9. Diagrama de clases


5.2.3.      Diagramas de secuencia (escenario normal y de error)

    Los diagramas de Secuencia son usados para establecer mayor detalle de un escenario del
sistema, determinando los objetos y mensajes involucrados.

    El diagrama de Secuencia muestra los objetos involucrados en el escenario mediante líneas
verticales y punteadas, y los mensajes entre objetos como flechas horizontales conectando
líneas de pares de objetos.

   Representa una interacción como un gráfico bidimensional. La dimensión vertical es el eje de
tiempo, que avanza hacia debajo de la página, la dimensión horizontal muestra los roles de
clasificador que representan objetos individuales en la colaboración.

   Los mensajes son dibujados cronológicamente desde arriba hacia abajo. La ubicación de los
objetos es arbitraria.
Figura 10. Diagrama de secuencia escenario normal -> registrar usuario
Figura 11. Diagrama de secuencia escenario de error -> registrar usuario
Figura 12. Diagrama de secuencia escenario normal. Hacer cuestionario
Figura 13. Diagrama de secuencia escenario de error hacer cuestionario


5.3.     Aspectos de la implementación de la aplicación

    El proyecto es una aplicación compuesta por formularios Web, base de datos access, clases,
servicios web, hojas de estilo etc. Un formulario web o “web form” es aquello a partir de lo cual
uno comienza a trabajar en cualquier página de Internet, es decir, podemos entenderlo como el
inicio o la base de lo que será nuestro proyecto.

   Los formularios web forms están formados por una combinación de HTML, código y controles
que se ejecutan en un servidor Web ejecutando Microsoft Internet Information Services (IIS).
Los formularios Web Forms muestran una interfaz de usuario que genera HTML y que se envía
al navegador, mientras que el código de soporte y los controles que la componen permanecen
en el servidor Web.

   Los formularios Web Forms se denominan habitualmente páginas ASP .NET o páginas ASPX.
Tienen una extensión.aspx y funcionan como contenedores para el texto y los controles que
deseamos mostrar en el navegador. Las páginas ASP .NET (.aspx) y Active Server Pages (ASP)
(.asp) pueden coexistir en el mismo servidor. La extensión del archivo determina si la página la
procesa ASP o ASP .NET.

  Están frecuentemente formados por dos archivos distintos:

                    •   El archivo.aspx contiene la IU para el formulario Web Form, (lo que se
                        entiende como la parte visual).
                    •   El archivo.aspx.vb o.aspx.cs, denominado página de código
                        subyacente, contiene el código de soporte. El código detrás del
                        formulario (en un archivo de clase separado). Esta combinación trae
                        excelentes ventajas tales como un conjunto de Server-controls para el
                        desarrollo Web lo que permite la utilización de menos código, la
                        posibilidad de crear controles para cumplir con otras necesidades en
                        cuánto a funcionalidades y el soporte de múltiples lenguajes.

  Las funciones de un formulario Web Form están definidas por tres niveles de atributos.

                    •   Los atributos de página definen las funciones globales.
                    •   Los atributos de cuerpo definen cómo se mostrará una página.
                    •   Los atributos de formulario definen cómo se procesarán los grupos de
                        controles.

  Algunos ejemplos de código de las clases implementadas en el proyecto:

  Esta clase la usamos para la exportacion de los datos en formato xls o doc.

public class ClassExportar
{
public ClassExportar()
{
//
// TODO: Agregar aquí la lógica del constructor
//
}
public void exportar_datos(GridView mi_gridView,
string extension, Page miPag )
{
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter htw = new HtmlTextWriter(sw);
Page pagina = new Page();
HtmlForm form = new HtmlForm();

mi_gridView.EnableViewState = false;
pagina.EnableEventValidation = false;
pagina.DesignerInitialize();
pagina.Controls.Add(form);
form.Controls.Add(mi_gridView);
pagina.RenderControl(htw);
miPag.Response.Clear();
miPag.Response.Buffer = true;
miPag.Response.ContentType = "application/vnd.ms-excel";
miPag.Response.AddHeader("Content-Disposition",
"attachment;filename=Cuestionario."
+ extension);
miPag.Response.Charset = "UTF-8";
miPag.Response.ContentEncoding = Encoding.Default;
miPag.Response.Write(sb.ToString());
miPag.Response.End();
}

  Clase estadística, usada para el cálculo de las funciones más importantes que se muestran
en la parte administrativa de cada cuestionario, Algunos métodos de esta clase son:

public class Class_estadistica
{
ArrayList Mi_Array;
int Columna_Num;

public Class_estadistica(GridView Mi_Gridview, int numero )
{
Columna_Num = numero;
GridViewRow fila;
int numero_filas = Mi_Gridview.Rows.Count;
string colum;

Mi_Array = new ArrayList();

for (int i = 0; i < numero_filas; i++)
{
fila = Mi_Gridview.Rows[i];
colum = fila.Cells[this.Columna_Num].Text;
if (colum != "&nbsp;")// String.Empty)
{
Mi_Array.Add (int.Parse(colum));// enpezando en 0
}
}// for
}

public int media()
{
int longArray = this.Mi_Array.Count;
int suma = this.sumaElemArray();
int media=0;
if (longArray != 0)
{
media = suma / longArray;
}
return media;
}// media

//-----------------------------------
public double Desviacion_Tipica()
{
double des = 0;
if (this.varianza() != 0)
{
des = Math.Round(Math.Sqrt(this.varianza()), 3);
}
return des;
}
}


  Esta clase es usada para el incremento de aciertos y fallos de la aplicación efecto stroop.

public class Class_Efecto_Stroop
{
public ArrayList mi_array;
public int longitud=0;
public int aciertos;
public int fallos;

public Class_Efecto_Stroop(GridView Mi_Gridview)
{
GridViewRow fila;
int numero_filas = Mi_Gridview.Rows.Count;
string colum;
mi_array =new ArrayList();

for (int i = 0; i < numero_filas; i++)
{
fila = Mi_Gridview.Rows[i];
colum = fila.Cells[1].Text;// columna
this.mi_array.Add (colum);
}// for
longitud = mi_array.Count;
aciertos = 0;
fallos = 0;
}

public int incremento_Aciertos(){
this.aciertos = this.aciertos + 1;
return this.aciertos;
}
public int incremento_Fallos() {
this.fallos = this.fallos + 1;
return this.fallos;
}
}


   Web service, usado para el extender autoComplete de Ajax que necesita de un servicio Web
para su correcto funcionamiento

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class AutoComplete : System.Web.Services.WebService
{
private static string[] ArrayPalabras = null;

public AutoComplete()
{
}
[WebMethod]

public string[] InformacionAutoComp(string prefixText, int count)
{
String cadenaOleDb;
OleDbConnection cn;
OleDbCommand cmd;
cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" +Server.MapPath
(@"App_DataBDProyecto.mdb") + ";");
cadenaOleDb = "select Nombre_Usuario,
Apellidos from datosPersonales ";
cmd = new OleDbCommand(cadenaOleDb, cn);
OleDbDataAdapter adp = new OleDbDataAdapter(cadenaOleDb, cn);
DataSet ds = new DataSet();

adp.Fill(ds);
adp.Dispose();
cn.Close();
Int32 numFilas = ds.Tables[0].Rows.Count;
string[] temp = new string[numFilas];

for (Int32 i = 0; i < numFilas; i++)
{
temp[i] = ds.Tables[0].Rows[i][0].ToString();
}
Array.Sort(temp, new CaseInsensitiveComparer());
ArrayPalabras = temp;

int index = Array.BinarySearch(ArrayPalabras, prefixText,
new CaseInsensitiveComparer());
if (index < 0)
{
index = ~index;
}
int cuenta;
for (cuenta = 0; cuenta < count && index + cuenta <
ArrayPalabras.Length; cuenta++)
{
if (!ArrayPalabras[index + cuenta].StartsWith(prefixText,
StringComparison.CurrentCultureIgnoreCase))
{
break;
}
}
String[] Solucion = new string[cuenta];
if (cuenta > 0)
{
Array.Copy(ArrayPalabras, index, Solucion, 0, cuenta);
}
return Solucion;
}
}

   En lineas generales, la herramienta web esta formada por formularios webs aspx, que se
comunican con nuestro sistama de base de datos. Es imprescindible para poder ejecutar este
proyecto tener instalado el servidor IIS de Microsft.

   Internet Information Server es un servidor Web, que incluye los servicios de: HTTP,
HTTPS, FTP, SMTP (correo saliente) y NNTP (grupos de noticias). Además es capaz de ejecutar
varios motores de script como: ASP, PHP, Cold Fusion, etc…

  Por defecto el servidor IIS no viene al instalar el sistema operativo, para ello tenemos que ir
a Mi PC -> Panel de Control -> Añadir o quitar programas y seleccionar "añadir y quitar
componentes de Windows”, seleccionar Internet Information Server, nos pedirá el CD de
Windows XP para copiar e instalar el software.

  Una vez instalado para acceder al panel de control del IIS tenemos que ir a:

   Inicio -> Programas -> Herramientas de administración - > Internet Information
Server, obtendremos la, que es el panel de control para el IIS desde donde administraremos,
instalaremos y modificaremos nuestro proyecto Web.

  El directorio del Web por defecto es c:inetpubwwwroot
Figura 14. Vista en el explorador de Windows del directorio donde se guarda nuestro proyecto en el IIS


     Para acceder al proyecto, tendríamos que entrar en los directorios

     Inetpub ->wwwroot->gonru

     Que es la carpeta que contiene todo el contenido del proyecto MenPas

    La carpeta administrador: contiene                      todos     los    formularios       relacionados   con    la
administración de nuestra aplicación.

     La carpeta App_code: contiene todas las clases que se han implementado.

     La carpeta App_Data: Encontramos en ella la base de datos del proyecto.

      Las   carpetas Eval individual y organizacional contienen                                respectivamente      los
cuestionarios individuales y los relacionados con los diferentes centros.

   Las carpetas imágenes, images y gif animados contienen las diferentes imágenes usadas
en el proyecto.

   La implementación de la base de datos se ha realizado en el programa Microsoft Access, es
un programa Sistema de gestión de base de datos relacional creado y modificado por Microsoft
para uso personal de pequeñas organizaciones.

6.     Conclusiones y trabajos futuros

6.1      Principales problemas encontrados en el desarrollo del proyecto
La adaptación a la plataforma, al lenguaje, eran en principio uno de los principales
problemas para el desarrollo, pero al comenzar uno de los problemas mas grabes fue hardware,
ya que el portátil donde se realizaba el proyecto tenia instalado Windows XP Home, y para la
instalación de Visual Studio .NET 2005 se necesitaba tener instalado SP2. Así que se instaló
Windows XP Profesional SP2.

  Otro problema es el consumo de memoria, el equipo trae 256 megas de RAM, lo que hace
que a la hora de compilar y ejecutar la aplicación vaya más lento de lo normal.

  Referente a la parte software, el uso de la plataforma Visual Studio .NET 2005 no ha sido
muy complicada.

   En la realización de la aplicación modrian es donde hemos encontrado más dificultades a la
hora de tener un funcionamiento correcto. Al principio se usaban variables estáticas, y al probar
el proyecto en el servidor IIS con varios usuarios conectados, los datos de las variables
estáticas se modificaban, cambiando la configuración de la aplicación, así que se optó por el
uso de variables de sesión, explicadas en capítulos anteriores, lo que nos solucionó el problema.

   Dentro de esta aplicación, también el crear controles en tiempo de ejecución fue algo
complejo, solucionando el problema creando clases que heredaran de la clase botton y con la
manipulación de delegados.

   Otro problema encontrado es el encontrar una herramienta para el uso de gráficas que sea
de licencia gratuita, se había probado con algunas pero tenían un periodo de pruebas de tres
meses, o no te dejaban usar toda la funcionalidad que trae la versión de pago.

   Se ha usado la librería de uso gratuito WebCharts, que nos muestra los resultados en una
grafica, guardándose como una imagen con extensión JPG o PNG en el directorio WebChart que
podemos encontrar el nuestro proyecto.

6.2.   Conclusiones

   Su realización en la plataforma .NET ha sido un reto a nivel individual, ya que me ha
formado bastante, solucionando los posibles errores y dificultades que surgían, bien en la Web
o con tutorías.

   Hemos implementado una herramienta Web capaz de evaluar a través de Internet a
deportistas y entornos deportivos, mediante la implementación de los diferentes cuestionarios
desarrollados en el proyecto. Para ello se ha intentado usar un diseño lo más amigable y fácil
de utilizar para que el usuario acceda de forma cómoda a la aplicación y pueda realizar las
pruebas oportunas.

    En nuestra aplicación el usuario puede obtener los resultados de los cuestionarios a la
finalización de los mismos, y el administrador podrá consultar los datos obtenidos por los
diferentes usuarios, o categorías, cobrando gran importancia el estudio estadístico que se hacen
de dichos resultados, que se pueden exportar a ficheros de Word o Excel para mayor
comodidad y mostrar en graficas.
La ventaja de esta aplicación Web es que tanto el usuario como el administrador pueden
acceder desde cualquier lugar del mundo donde tenga acceso a Internet, que hoy día y gracias
a las nuevas tecnologías podemos encontrar un acceso en cualquier ciudad del planeta y poder
realizar un cuestionario.

   Los conocimientos adquiridos durante la carrera, me han ayudado a poder planificar y
desarrollar el proyecto.

   Ha sido un reto el trabajar con la plataforma .NET, usar IIS, Microsoft Acces, ASP .NET, Ajax,
pero gracias a foros, manuales, libros, y a los directores del proyecto se ha podido realizar el
proyecto de un modo muy ameno.

  Al terminar el proyecto uno adquiere unos conocimientos que le pueden servir tanto para el
mundo laboral como personalmente, aportando formación.

6.3.   Posibles mejoras del programa

   Como toda aplicación web, una vez que sale al mercado o se termina ya queda antigua. Ya
que no paran de salir nuevas herramientas tecnologías diseños que la pueden mejorar
drásticamente.

   Una de las mejoras que se podría realizar es la realización de diferentes plantillas para que el
administrador pueda realizar los cuestionarios que crea oportunos, añadiéndolos a la lista de
cuestionarios, pero esto es bastante complejo, ya que se podría haber realizado por ejemplo
una plantilla para crear cuestionarios de verdadero y falso, pero en el ámbito de la psicología
casi todos los cuestionarios tienen unas tablas, varemos y datos estadísticos que hay que
cotejar para que den los resultados deseados.

  Un ejemplo de ellos es el Poms, y el Csai2 donde hay que tener en cuenta las categorías del
usuario tales como sexo, edad, lo que complica hacer una plantilla para todos los cuestionarios.

   Otra posible mejora es cambiar el tipo de herramienta usada para mostrar los gráficos,
(aunque sea de pago) ya que hoy día podemos encontrar productos que nos ofrece un abanico
de posibilidades a la hora de elegir tipos de graficas, con un diseño muy superior al que nos
ofrece el usado en el proyecto (WebCharts).

   Se pueden añadir más campos a las tablas de los cuestionarios para controlar que un
cuestionario se realiza en un determinado tiempo.

   La creación de servicios Web para el proyecto, que contiene un conjunto de protocolos y
estándares que sirven para intercambiar datos entre aplicaciones.

Bibliografía

            •   Ceballos, F. J. (2007). “Enciclopedia de Microsoft Visual C#” (2º edición).
                Madrid: Ra-Ma.
            •   David, V. y Julián, T. (2002). “Visual Studio .NET”. Madrid: Anaya Multimedia.
            •   Eysenck, H.J. y Eysenck, S.B.G. (1975). “Manual of the Eysenck Personality
                Questionnaire”. Londres: Hodder y Stoughton.
•   Eysenck, H.J. y Eysenck, S.B.G. (1975). “Manual of the Eysenck Personality
    Questionnaire”. Londres: Hodder y Stoughton.
•   Eysenck, H.J. y Eysenck, S.B.G. (1989). “Cuestionario de personalidad para
    niños” EPQ-J. Adp. Española. Madrid: TEA Ediciones. (Orig. 1975).
•   Eysenck, H.J. y Eysenck, S.B.G. (1989).”Cuestionario de personalidad para
    niños” EPQ-J. Adp. Española. Madrid: TEA Ediciones. (Orig. 1975).
•   Harris, D.V.; Harris, B.L. (1984). “The athlete's guide to Sports Psychology:
    Mental Skills for Physical people. Champaign,IL”: Leisure Press. (Traducción
    española, Psicología del deporte. Integración mente-cuerpo, Barcelona:
    Hispano Europea, 1987).
•   Harris, D.V.; Harris, B.L. (1984). “The athlete's guide to Sports Psychology:
    Mental Skills for Physical people. Champaign,IL”. Leisure Press. (Traducción
    española, Psicología del deporte. Integración mente-cuerpo, Barcelona:
    Hispano Europea, 1987).
•   Herbert, S. (2002). “Manual de referencia C#“ Madrid: MC Graw Hill
•   Hernández Mendo, A. (2001). “Cuestionario para valoración de actividades de
    ocio y tiempo libre”. Anuario de Psicología, 32(3), 67-80.
•   Hernández Mendo, A. (2001). “Un cuestionario para evaluar la calidad en
    programas de actividad física”. Revista de Psicología del Deporte, 10, 179-196.
•   Hernández Mendo, A. y Ramos, R. (1995a). “Aplicación informática para
    evaluación y entrenamiento de la atención en psicología del
    deporte”. Psicothema, 7(3), 527-529.
•   Hernández Mendo, A. y Ramos, R. (2000). “El uso de la informática en la
    Psicología del Deporte”. Lecturas: EF y Deportes. Revista Digital, 19,
    marzo http://www.efdeportes.com/efd19/infpsi.htm[Consulta: 23 de marzo de
    2000].
•   Hernández Mendo, A. y Ramos, R. (1995). “Informatización del Profile of Moode
    States de McNair, Lorr y Dropleman”. Aplicaciones. Revista de Psicología del
    Deporte, 7-8, 31-50.
•   Hernández Mendo, A. y Ramos, R. (1995b). “Informatización de la evaluación y
    entrenamiento de la atención”. Anales de Psicología, 11(2), 183-191.
•   Julian, T. y David, V. (2002). “La Biblia de Visual Studio .NET”. Madrid: Anaya
    Multimedia.
•   Marteens, I. (2004). “La cara oculta de C#”. Madrid: Intutive Sight.
•   Martens, R. (1977). “Sport Competition Anxiety Test. Champaign”, IL: Human
    Kinetics.
•   Martens, R. (1982). “Sport competition anxiety test. Champaign”, Illinois :
    Human Kinetics.
•   Martens, R; Burton, D; Vealey, R.S; Bump, L.A. & Smith, D.E. (1990).
    “Development and validation of the Competitive State Anxiety Inventory-2”. En
    R. Martens, R.S. Vealey, & D.Burton,Competitive anxiety in sport (pp.117-190).
    Champaign, tL: Human Kinetics.
•   Martín Sierra, A. (2007). “Desarrollo de aplicaciones Web con ASP .NET 2.0”.
    Madrid: Ra-Ma.
•   Maslach, C. y Jackson, S. E. (1986). “Maslach Burnout Inventory” (2ª Ed., 1ª
    Ed. de 981). Palo Alto, California: Consulting Psychologists Press.
•   McNair, D., Lorr, M. & Droppleman, L. (1971). “Profile of Mood States Manual”.
    San Diego: Educational and Industrial Testing Service.
•   Morales Sánchez, V., Hernández Mendo, A. y Blanco, A. (2005). “Evaluación de
    la calidad en los programas de actividad física”. Psicothema, 17(2), 292-298.
•   Morales Sánchez, V., Hernández Mendo, A. y Blanco, A. (2009). “Evaluación de
    la calidad en organizaciones deportivas”: adaptación del modelo
    Servqual. Revista de Psicología del Deporte, 18(2), 137-150.
•   Parasuraman, A., Berry, L. y Zeithaml, V. (1988). Servqual: “A multiple-item
    sacale for measuring consumer perceptions of service quality”. Journal of
    Retailing, 64, 12-40.
•   Parasuraman, A., Berry, L. y Zeithaml, V. (1991). “Refinement and
    reassessment of the servqual scale”. Journal of retailing, 67, 420-450.
•   Parasuraman, A., Berry, L. y Zeithaml, V. (1993). “More on improving service
    quality measurement”. Journal of Retailing, 69, 140-147.
•   Parasuraman, A., Zeitham1, V.A. y Berry, L.L. (1994b).“Reassessment of
    Expectations as a Comparison Standard in Measuring Service Quality:
    implications for Further Research”. Journal of Marketing, 58, 111-124.
•   Parasuraman, A., Zeithaml, V. A. y Berry, L. L. (1988). Servqual: “A Multiple
    Item Scale for Measuring Consumer Perceptions of Service Quality”. Journal of
    Ratailing, 12-40.
•   Parasuraman, A., Zeithaml, V. y Berry, L (1991). “Refinement and reassessment
    of the Servqual scale”. Journal of Retailing, 67 (4), 420-450.
•   Parasuraman, A., Zeithaml, V. y Berry, L. (1985). “A Conceptual Model of
    Service Quality and its Implications for Future Research”. Journal of
    Marketing, 49, 41-50.
•   Parasuraman, A., Zeithaml, V. y Berry, L. (1988). Servqual: “A multiple-item
    scale for measuring consumer perceptions of service quality”. Journal of
    Retailing, 64, 12-40.
•   Parasuraman, A., Zeithaml, V. y Berry, L. (1994a).“Reassessment of
    expectations as a comparison standard in measuring service quality:
    implications for further research”. Journal of Marketing, 58, 111-124.
•   Parasuraman, A., Zeithaml, V. y Berry, L. (1994b). Alternative scales for
    measuring service quality: a comparative assessment based on psychometric
    and diagnostic criteria. Journal of Retailing, 70, 201-230.
•   Parasuraman, A., Zeithaml, V.A. y Berry, L.L. (1994a). “Alternative Scales for
    Measuring Service Quality: A comparative Assessment Based on Psychometric
    and Diagnostic Criteria”. Journal of Retailing, 70 (3), 201-230.
•   Richardson, P. S., Dick, A.S. y Jain, A. K. (1994). Extrinsic and intrinsic cue
    effects on perceptions of store brand quality. Journal of Marketing, 58, 28-36.
•   Ridley Stroop, J. (1935). “Studies of interference in serial verbal
    reactions”. Journal of Experimental Psychology, 18, 643-662.
•   Rodríguez Gómez, M. y Besteiro Gorostizaga, M. A. (2002). “Desarrollo de
    aplicaciones .NET con Visual C#”. Madrid: Mc Graw Hill.
•   Spielberger, D.D; Gorsuch, R.L; & Luschene, r.E. (1970). “Manual for the state-
    trait anxiety inventory (self-evaluation questionnaire)”. Palo Alto, CA:
    Consulting Psychologists Press.
•   Zeithaml, V. (1987). “Defining and relating price, perceived quality and
    perceived value”, 87-101. Cambridge: Marketing Science Institute.
•   Zeithaml, V. (1988). “Consumer perceptions of price, quality, and value: a
    means-end model and synthesis of evidence”. Journal o/marketing, 52, 2-22.
•   Zeithaml, V., Berry, L. y Parasuraman, A. (1988). “Communication and control
    processes in the delivery of service quality”. Journal of Marketing, 52 (2), 35-
    48.
•   Zeithaml, V., Berry, L. y Parasuraman, A. (1988). “Communication and control
    processes in the delivery of service quality”. Journal of Marketing, 52, 35-48.
•   Zeithaml, V., Berry, L. y Parasuraman, A. (1993). “The nature and determinants
    of customer expectations of service”. Journal of the Academy of Marketing
    Science, 21 (1), 1-12.
•   Zeithaml, V., Berry, L. y Parasuraman, A. (1996). “The behavioural
    consequence~ of service quality”. Journal of Marketing, 60, 31-46.
•   Zeithaml, V., Parasuraman, A. y Berry L. (1993). “Calidad total en la gestión de
    servicios. Cómo lograr el equilibrio entre las percepciones y las expectativas de
    los consumidores”. Madrid: Díaz de Santos.
•   Zeithaml, V., Parasuraman, A. y Berry, L. (1985). “Problems and strategies in
    service marketing”. Journal of Marketing, 49, 33-46.
•   Zeithaml, V.A., Parasuraman, A. y Berry, L.L. (1990). “Delivering Quality
    service. Balancing Customer Perceptions and Expectations”. New York: The
    Free Press.
•   Zeki, S. & Shipp, S. (1988). “The functional logic of cortical connections.
    Nature”, 335 (6188), 311-317.
•   Zeki, S. (1992). “La imagen visual en la mente y en el cerebro. Investigación y
    Ciencia”, 194, 27-35.

Herramienta software para la evaluación

  • 1.
    Herramienta software parala 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.
  • 3.
    Se trata, portanto, de conseguir que el sitio Web se convierta en un lugar de obligada consulta tanto para profesionales de la materia como para la realización de los inventarios y programas por parte de usuarios, con la gran ventaja de que se puede acceder cómodamente desde casa con sólo poseer conexión a Internet. 1. Etapas de desarrollo del proyecto Vamos a dividir el proyecto en 4 etapas, que pasaremos a describir: • Estudio de la plataforma. Se utilizará la plataforma .NET de Microsoft© (Herbert, 2002) y los distintos servicios que provee a la hora del desarrollo de aplicaciones, así como el estudio de herramientas como Ajax y el lenguaje C# (Ceballos, 2007). • Estudio de Técnicas de Bases de datos. Se estudiarán/repasarán SQL y las principales técnicas de diseño de tablas. • Implementación de la aplicación. Aplicando técnicas y estándares estudiados anteriormente se desarrollará una aplicación visual para la evaluación psicosocial de deportistas y entornos deportivos. Instalación y documentación de las diferentes aplicaciones útiles que usemos para el desarrollo de nuestra aplicación. • Alojo de la aplicación en un servidor Web permanente, para que se pueda tener acceso público a él mediante cualquier navegador. Pero antes del alojo de la aplicación se han realizado varias pruebas a la aplicación para solucionar posibles errores que pudieran existir en casos extremos o poco usuales 1.2. Medios materiales y herramientas que se pretenden utilizar • Conexión a Internet, pues la aplicación es de acceso remoto. • Programa de análisis y metodología orientada a objetos MagicDraw. • Se desarrollara en un portátil TravelMate 243LC (Intel Celaron 2.5GHz, 256 MB DDR SDRAM, 30 GB disco duro ultra ATA/100). • Microsoft Visual Studio 2005. • Microsoft Word y Access. 2. Introducción a la plataforma .NET 2.1. Introducción La aparición de .NET a mediados del año 2001 ha supuesto un antes y un después en el desarrollo de software para entornos Microsoft. Pues más que una nueva versión o adaptación de las tecnologías existentes, la arquitectura .NET representa un cambio de filosofía en la construcción de aplicaciones. Antes de la llegada de .NET, las tecnologías de desarrollo proporcionadas por Microsoft se encontraban bastante dispersas, de modo que cada tipo de aplicación requería su propio lenguaje de programación, su propio entorno de desarrollo. Precisamente, este ha sido uno de los grandes logros de .NET, el proporcionar un marco de trabajo común para todos los tipos de desarrollo.
  • 4.
    Por .NET entendemosel conjunto de tecnologías Microsoft destinadas al desarrollo de aplicaciones informáticas. Estas tecnologías se basan en la utilización de un modelo de desarrollo unificado, lo que significa que podrán ser utilizadas tanto para el desarrollo de aplicaciones que se ejecuten en entorno Windows, como para las que se vayan a ejecutar en entorno Web (como este proyecto) o incluso para aquellas cuyo entorno de ejecución se encuentra en un dispositivo electrónico. Podemos decir que .NET es un programa de software que conecta información, usuarios, sistemas y dispositivos. Incluye clientes, servidores y herramientas para programadores, y está formado por: • Windows .NET Framework: permite generar y ejecutar todo tipo de software, incluidas aplicaciones basadas en web, aplicaciones cliente inteligentes y servicios web XML. Estos componentes facilitan la integración, ya que comparten datos y funcionalidad a través de una red mediante protocolos estándar independientes de la plataforma, como XML, SOAP y HTTP. • Varias herramientas para programadores, como Microsoft© Visual Studio .NET (David y Julián, 2002) que ofrece un entorno de desarrollo integrado (IDE) para sacar el máximo partido a la productividad de los programadores con .NET Framework. • Un conjunto de servidores, incluidos Microsoft Windows Server, Microsoft SQL Server y Microsoft BizTalk Server, que integran, ejecutan, operan y administran servicios Web XML y aplicaciones basadas en Web. • Software cliente, como Windows XP, Windows CE o Microsoft Office XP, que ayuda a los programadores a ofrecer una experiencia positiva para el usuario a través de la amplia familia de dispositivos y productos existentes. 2.2. Versiones .NET Hasta la fecha, se han sucedido cuatro versiones de .NET. • La primera versión la 1.0 fue lanzada a mediados de 2001. En esta versión se produjo un cambio sustancial, puesto que supuso la introducción de la plataforma .NET de Microsoft. • Visual Studio .NET 2002 supuso también la introducción del lenguaje C#, un lenguaje nuevo diseñado específicamente para la plataforma .NET, basado en C++ y Java. Se presentó también el lenguaje J# sucesor de J++ el cual, en lugar de ejecutarse en una máquina virtual de Java, se ejecuta únicamente en el framework .NET. El lenguaje Visual Basic fue remodelado completamente y evolucionó para adaptarse a las nuevas características de la plataforma. • A esta le sucedió la versión 1.1. Visual Studio .NET 2003 supone una actualización menor de Visual Studio .NET. Se actualiza el .NET Framework a la versión 1.1. También se añade soporte con el fin de escribir aplicaciones para determinados dispositivos móviles, ya sea con ASP .NET o con el .NET Compact Framework. Además el compilador de
  • 5.
    Visual C++ semejora 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ógicade 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. Arquitecturade 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 respectoal 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 figurailustra 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. Bibliotecade 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 lapolí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ónde 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 programadortrabaja 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 integrarsemejor 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 todaslas 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 quese 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, sepuede 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 elentorno 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 proyectose 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 conjuntode 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 usuariospueden 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.
  • 34.
    El único problemade Ajax es que, si bien no es la panacea de la dificultad, sí requiere unos conocimientos medianamente avanzados del programador Web, así como una gran capacidad de organización de código. Ante todo esto, la respuesta de ASP .NET 2.0 ha sido contundente: ASP .NET AJAX. ASP .NET Ajax es una nueva tecnología Web que se presenta como extensión gratuita de ASP .NET 2.0, añadiéndole funcionalidades AJAX que eliminan de un plumazo su dificultad de uso, y siendo independiente del navegador con que accedamos. Ahora los programadores Web no necesitan saber absolutamente nada de javascript o XML para crear potentes aplicaciones Web 100% AJAX. 4.2.8.2. Qué es el ASP .NET Ajax control toolkit El ASP .NET Ajax control toolkit nace como un proyecto conjunto entre la comunidad de programadores y Microsoft. Está desarrollado en base a ASP .NET Ajax y contiene una serie de controles Web y extendedores con los que podremos utilizar las avanzadas características de ASP .NET AJAX sin más que un arrastre de ratón. Del mismo modo, con su descarga disponemos de ejemplos de uso, así como del propio código fuente de los controles. Y lo mejor de todo es que es totalmente gratuito. Vamos a distinguir entre controles web y extendedores, donde los primeros tienen una entidad por sí mismos, mientras que los segundos únicamente añaden un comportamiento a un control Web existente. Se trata de una serie de pequeñas funcionalidades que cualquier webmaster, en su historia de programador, ha utilizado o deseado para sus webs. Estos controles van desde un simple botón con una alerta asociada, hasta un complejo panel que podemos arrastrar por la pantalla; en ambos casos, mandando y recogiendo información entre el cliente y el servidor sin ningún tipo de recarga de página. Su uso hará que nuestra Web sea mucho más atractiva y simpática al usuario a la par que potente y efectiva. 4.2.8.3. Controles y extendedores Ajax control toolkit A continuación mostramos algunos de ellos, los cuales han sido usados en nuestro proyecto. • Accordion • AutoComplete: Se extiende en un textbox para completar alguna palabra, cuenta con un combobox el cual se basa en un webservice. Hace desplegar palabras que empiezan con el prefijo tecleadas en el textbox. Este entendedor se ha usado en el formulario “administrar datos personales” a la hora de buscar a un usuario por el nombre de usuario. • AlwaysVisibleControl Extender: Descripción: el l AlwaysVisibleControl es uno de los controles Web del ASP .NET Ajax control toolkit más simples. Su funcionalidad consiste en dejar clavado el contenido en un punto específico de la página. Un ejemplo sería el que cierto mensaje se muestre siempre en
  • 35.
    la parte inferiorderecha de nuestra página, y que se mantenga en la misma posición de la pantalla del usuario cuando se haga scroll sobre la página. • Se ha usado en la aplicación modrian del proyecto a la hora de enseñar la paleta de colores y el panel con el tiempo de espera. o Animation o CascadingDropDown o CollapsablePanel o ConfirmButton o DragPanel o DropDown o DropShadow o DynamicPopulate • FilteredTextBox: El FilteredTextBox extiende al TextBox de modo que podemos definir qué tipo de caracteres permitimos que escriba el usuario. Se ha usado en los formularios “registro de usuarios” y “registro centros” para controlar que los campos introducidos son los correctos, Por ejemplo para controlar que en el campo edad sólo se introducen números y no otro tipo de caracteres que no sean dígitos. Elegiremos entre estas configuraciones y sus múltiples combinaciones: • Numbers: todos los números. • LowercaseLetters: letras minúsculas. • UppercaseLetters: letras mayúsculas. • Custom: los caracteres que definamos. • HoverMenu • ModalPopup : El ModalPopup es otro ejemplo de potente funcionalidad en muy pocas líneas de código. Con éste, conseguimos el efecto de mostrar contenido deshabilitando la interacción con el resto de la página. Podemos emular el efecto del famoso “window.open(...)” de Javascript sin necesidad de salir de la página en que estamos ni de abrir una nueva ventana del navegador. Imaginemos que el usuario presiona el botón “Solución”, de nuestros cuestionarios y de repente la página se oscurece y aparece en el centro un cuadro donde nos informa de un posible error, todo ello sin salir de la página en que estamos y sin poder hacer nada con el resto de elementos de ésta. Así pues, el usuario puede elegir entre cancelar para volver donde estaba antes o presionar Aceptar, activando una llamada a una función javascript que hayamos definido. Se ha usado en casi todos los formularios de nuestro proyecto para informar de un posible error o pedir datos al usuario. • MutuallyExclusiveCheckBox • NoBot • NumericUpDown • PagingBulletedList
  • 36.
    PasswordStrength • PopupControl • Rating • ReorderList • ResizableControl • RoundedCorners • Slider • TextBoxWatermark • ToggleButton • ValidatorCallout 5. Desarrollo de la aplicación 5.1. Descripción de la aplicación MenPas es una herramienta web para la evaluación de deportistas y entornos deportivos, implementada en la plataforma .NET en el lenguaje C#. Nos ofrece un interfaz grafica fácil de usar, permitiéndonos realizar determinados cuestionarios tanto a nivel individual como a nivel organizacional. Podemos elegir entre cuestionarios de ansiedad, personalidad, de estados de humor, de estrés, utilizar aplicaciones como efecto stroop o modrian, quedando todos esos resultados guardados en la base de datos para un posterior estudio estadístico y proporcionándonos las soluciones al instante de la resolución del cuestionario. Cada uno de los cuestionarios consta de una documentación donde el usuario puede consultar las características de dicho cuestionario, las instrucciones o una breve historia sobre el autor del mismo. El usuario que tenga perfil de administrador, puede consultar los resultados guardados en la base de datos para cada uno de los cuestionarios, donde puede elegir o bien obtener las soluciones de un determinado usuario para un cuestionario concreto, u obtener los resultados, por grupo de categorías, pudiendo seleccionar por nacionalidad, nivel de estudios, estado civil, edad entre otras. Una vez seleccionado al usuario o la categoría, el administrador puede consultar una tabla que contiene los valores estadísticos relacionados con esos datos, mostrándose también unas graficas relacionadas con esos valores estadísticos. También tiene la opción de poder exportar los resultados obtenidos a ficheros de Microsoft Word o Excel. Se le proporcionan las herramientas necesarias para el control de la aplicación, a nivel de usuarios, centros, y de cuestionarios. Dándole control total para eliminar, modificar o añadir los valores que estime oportunos. 5.2. Análisis del sistema Se ha usado UML que es una notación estándar para desarrollo de sistemas usando el enfoque orientado a objeto. Es una notación en evolución, aún en desarrollo. Comenzó en 1994 como un esfuerzo de Grady Booch y James Rumbaugh para combinar sus metodologías
  • 37.
    definiendo una notaciónestándar para ellas. Después, en 1995, Ivar Jacobson se unió al equipo. El Lenguaje Unificado de Modelado es un lenguaje de modelado visual que se usa para especificar, visualizar, construir y documentar artefactos de un sistema de software. Captura decisiones y conocimiento sobre los sistemas que se deben construir. Se usa para entender, diseñar, hojear, configurar, mantener, y controlar la información sobre el sistema. UML no es una metodología, es una notación obtenida desde experiencia en las más populares metodologías OO actuales. Capta la información sobre la estructura estática y el comportamiento dinámico de un sistema. Un sistema se modela como una colección de objetos discretos que interactúan para realizar un trabajo que finalmente beneficia a un usuario externo. UML es sólo una notación, no dicta estándares para el proceso de desarrollo. Sin embargo, UML condiciona dicho proceso de desarrollo al establecer los diagramas e información asociada que debe representarse. 5.2.1. Diagramas de casos de uso Casos de Uso es una técnica para capturar información de cómo un sistema o negocio trabaja actualmente, o de cómo se desea que trabaje. No es realmente un enfoque orientado a objeto, más bien es un enfoque de construcción de escenarios en los cuales se modelan los procesos del sistema. Sin embargo, constituye un buen modo de llevar a cabo la fase de captura de requisitos del sistema al comienzo del análisis orientado a objeto. Típicamente, se modela un caso de uso para cada escenario en el sistema o negocio. Cada caso de uso puede estar definido simplemente por una sentencia de texto que describe el escenario. También se puede describir mediante una secuencia de pasos ejecutados dentro del escenario o condiciones pre-post para que el escenario comience o termine, respectivamente. Un Caso de Uso es representado por una elipse y describe una situación de uso del sistema interactuando con actores. Un actor es un agente externo al sistema, alguien o algo que solicita un servicio al sistema o actúa como catalizador para que ocurra algo, este término incluye a los seres humanos, así como a otros sistemas informáticos y procesos. Durante el análisis del negocio se puede construir un diagrama de casos de uso que represente al sistema y dibujar paquetes que representen los diferentes dominios (subsistemas) del sistema.
  • 38.
    Para cada paquetese puede crear un diagrama de Casos de Uso hijo donde se describen los casos de uso del dominio. Esto se puede repetir refinando un Caso de Uso en un nuevo diagrama hijo, y así sucesivamente creando una jerarquía de diagramas de Casos de Uso. Figura 8. Diagrama casos de uso A continuación vamos a ver alguno de los casos de uso con más detalle, con el modelo que se expone a continuación. Nombre caso de uso Identificar usuario El usuario debe de introducir en los campos nombre de usuario y Descripción contraseña los valores que tenga asignados para tener acceso a la aplicación y poder realizar los cuestionarios El usuario debe estar registrado, y debe acceder a la página de Precondiciones login de nuestra aplicación
  • 39.
    El usuario introduceel nombre de usuario y contraseña y son los correctos. Escenario de éxito El sistema acepta la clave. El sistema nos muestra el tipo de cuestionario a realizar y la parte administrativa si es administrador. El usuario introduce el nombre de usuario y contraseña. El sistema nos da un error, debido a que el nombre de usuario Escenario de error 1 no esta registrado. El sistema nos informa mediante un mensaje de que el nombre de usuario no es el adecuado El usuario introduce el nombre de usuario y contraseña. El sistema nos da un error, debido a que la contraseña no es la Escenario de error 2 correcta. El sistema nos informa mediante un mensaje de que la contraseña es incorrecta para ese usuario El usuario deja en blanco uno de los dos campos o los dos. Escenario de error 3 El sistema nos informa mediante un mensaje de error de lo sucedido. Nombre caso de uso Registrar usuario Descripción El usuario debe rellenar los campos solicitados en el formulario El usuario ha entrado en la ventana de registro de usuarios, Precondiciones porque no estaba registrado en nuestra aplicación. El usuario rellena cada uno de los campos que se encuentran en el formulario de registro de usuarios, el nombre de usuario no Escenario de éxito coincide con uno ya registrado en nuestra base de datos. Los campos numéricos son rellenados correctamente El nombre de usuario introducido ya está registrado, por lo que Escenario de error1 debemos cambiar dicho nombre Hay campos que están vacíos y son obligatorios para poder Escenario de error2 registrarse en nuestra aplicación. El usuario deberá rellenar los
  • 40.
    campos que sedejaron en blanco No se ha introducido un correo electrónico correcto al no Escenario de error3 pertenecer el símbolo @ al correo electrónico. Nombre caso de uso Hacer cuestionario El usuario ya registrado realiza uno de los cuestionarios Descripción elegidos de nuestra aplicación Precondiciones El usuario tiene que estar registrado El usuario realiza el cuestionario sin dejar en blanco o seleccionar la respuesta para cada una de las afirmaciones. Escenario de éxito Presiona el botón Solución. Se muestran los resultados obtenidos El usuario deja casillas sin rellenar Presiona el botón solución Escenario de error Se muestra un mensaje de error informándonos de que se han dejado casillas sin rellenar. Nombre caso de uso Crear nuevo centro Rellenar una serie de campos sobre los datos del centro sobre el Descripción que se va a realizar el cuestionario organizacional El usuario debe de estar registrado y haber elegido la opción de Precondiciones cuestionarios organizacionales para poder rellenar los campos solicitados en el formulario. El usuario rellena cada uno de los campos que se encuentran en el formulario de registro de centros, El nombre del centro no coincide con uno ya existente en nuestra Escenario de éxito base de datos. Los campos numéricos son rellenados correctamente. No se deja ningún campo en blanco.
  • 41.
    El nombre delcentro introducido ya está registrado, por lo que Escenario de error 1 debemos cambiar dicho nombre Hay campos que están vacíos y son obligatorios para poder Escenario de error 2 registrarse en nuestra aplicación. El usuario deberá rellenar los campos que se dejaron en blanco Nombre caso de uso Modificar datos Se pueden modificar los datos existentes en las tablas, en los Descripción formularios administrativos Precondiciones Tener perfil de administrador y entrar en la aplicación. El administrador pulsa la opción de modificar, los campos se transforman en editables, modificando los campos que estime Escenario de éxito oportuno. Para completar la acción, hay que pulsar sobre actualizar, guardándose en la base de datos los datos modificados Deja algún campo obligatorio sin rellenar Escenario de error 1 Se muestra mensaje de error 5.2.2. Diagrama de clases El diagrama de clases es el diagrama principal para el análisis y diseño estático. Un diagrama de clases presenta las clases y objetos del sistema con sus relaciones estructurales y de herencia. La definición de clase u objeto incluye definiciones para atributos y métodos. Una clase describe un conjunto de objetos con estructura y comportamiento similares. Una clase está definida por una serie de propiedades. Las más relevantes son los atributos y los métodos. Una clase es representada como un rectángulo con cuatro compartimentos separados por líneas horizontales. En el superior, se muestra el nombre de la clase y todas las propiedades generales, en el siguiente se presenta la lista de atributos de la clase, a continuación se muestran los métodos. Cada atributo o método de una clase es antecedido por un indicador de visibilidad, especificado en cuadro de diálogo que define al método o atributo.
  • 42.
    Figura 9. Diagramade clases 5.2.3. Diagramas de secuencia (escenario normal y de error) Los diagramas de Secuencia son usados para establecer mayor detalle de un escenario del sistema, determinando los objetos y mensajes involucrados. El diagrama de Secuencia muestra los objetos involucrados en el escenario mediante líneas verticales y punteadas, y los mensajes entre objetos como flechas horizontales conectando líneas de pares de objetos. Representa una interacción como un gráfico bidimensional. La dimensión vertical es el eje de tiempo, que avanza hacia debajo de la página, la dimensión horizontal muestra los roles de clasificador que representan objetos individuales en la colaboración. Los mensajes son dibujados cronológicamente desde arriba hacia abajo. La ubicación de los objetos es arbitraria.
  • 43.
    Figura 10. Diagramade secuencia escenario normal -> registrar usuario
  • 44.
    Figura 11. Diagramade secuencia escenario de error -> registrar usuario
  • 45.
    Figura 12. Diagramade secuencia escenario normal. Hacer cuestionario
  • 46.
    Figura 13. Diagramade secuencia escenario de error hacer cuestionario 5.3. Aspectos de la implementación de la aplicación El proyecto es una aplicación compuesta por formularios Web, base de datos access, clases, servicios web, hojas de estilo etc. Un formulario web o “web form” es aquello a partir de lo cual uno comienza a trabajar en cualquier página de Internet, es decir, podemos entenderlo como el inicio o la base de lo que será nuestro proyecto. Los formularios web forms están formados por una combinación de HTML, código y controles que se ejecutan en un servidor Web ejecutando Microsoft Internet Information Services (IIS). Los formularios Web Forms muestran una interfaz de usuario que genera HTML y que se envía al navegador, mientras que el código de soporte y los controles que la componen permanecen en el servidor Web. Los formularios Web Forms se denominan habitualmente páginas ASP .NET o páginas ASPX. Tienen una extensión.aspx y funcionan como contenedores para el texto y los controles que
  • 47.
    deseamos mostrar enel navegador. Las páginas ASP .NET (.aspx) y Active Server Pages (ASP) (.asp) pueden coexistir en el mismo servidor. La extensión del archivo determina si la página la procesa ASP o ASP .NET. Están frecuentemente formados por dos archivos distintos: • El archivo.aspx contiene la IU para el formulario Web Form, (lo que se entiende como la parte visual). • El archivo.aspx.vb o.aspx.cs, denominado página de código subyacente, contiene el código de soporte. El código detrás del formulario (en un archivo de clase separado). Esta combinación trae excelentes ventajas tales como un conjunto de Server-controls para el desarrollo Web lo que permite la utilización de menos código, la posibilidad de crear controles para cumplir con otras necesidades en cuánto a funcionalidades y el soporte de múltiples lenguajes. Las funciones de un formulario Web Form están definidas por tres niveles de atributos. • Los atributos de página definen las funciones globales. • Los atributos de cuerpo definen cómo se mostrará una página. • Los atributos de formulario definen cómo se procesarán los grupos de controles. Algunos ejemplos de código de las clases implementadas en el proyecto: Esta clase la usamos para la exportacion de los datos en formato xls o doc. public class ClassExportar { public ClassExportar() { // // TODO: Agregar aquí la lógica del constructor // } public void exportar_datos(GridView mi_gridView, string extension, Page miPag ) { StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); HtmlTextWriter htw = new HtmlTextWriter(sw); Page pagina = new Page(); HtmlForm form = new HtmlForm(); mi_gridView.EnableViewState = false; pagina.EnableEventValidation = false; pagina.DesignerInitialize(); pagina.Controls.Add(form); form.Controls.Add(mi_gridView);
  • 48.
    pagina.RenderControl(htw); miPag.Response.Clear(); miPag.Response.Buffer = true; miPag.Response.ContentType= "application/vnd.ms-excel"; miPag.Response.AddHeader("Content-Disposition", "attachment;filename=Cuestionario." + extension); miPag.Response.Charset = "UTF-8"; miPag.Response.ContentEncoding = Encoding.Default; miPag.Response.Write(sb.ToString()); miPag.Response.End(); } Clase estadística, usada para el cálculo de las funciones más importantes que se muestran en la parte administrativa de cada cuestionario, Algunos métodos de esta clase son: public class Class_estadistica { ArrayList Mi_Array; int Columna_Num; public Class_estadistica(GridView Mi_Gridview, int numero ) { Columna_Num = numero; GridViewRow fila; int numero_filas = Mi_Gridview.Rows.Count; string colum; Mi_Array = new ArrayList(); for (int i = 0; i < numero_filas; i++) { fila = Mi_Gridview.Rows[i]; colum = fila.Cells[this.Columna_Num].Text; if (colum != "&nbsp;")// String.Empty) { Mi_Array.Add (int.Parse(colum));// enpezando en 0 } }// for } public int media() { int longArray = this.Mi_Array.Count; int suma = this.sumaElemArray(); int media=0; if (longArray != 0) { media = suma / longArray;
  • 49.
    } return media; }// media //----------------------------------- publicdouble Desviacion_Tipica() { double des = 0; if (this.varianza() != 0) { des = Math.Round(Math.Sqrt(this.varianza()), 3); } return des; } } Esta clase es usada para el incremento de aciertos y fallos de la aplicación efecto stroop. public class Class_Efecto_Stroop { public ArrayList mi_array; public int longitud=0; public int aciertos; public int fallos; public Class_Efecto_Stroop(GridView Mi_Gridview) { GridViewRow fila; int numero_filas = Mi_Gridview.Rows.Count; string colum; mi_array =new ArrayList(); for (int i = 0; i < numero_filas; i++) { fila = Mi_Gridview.Rows[i]; colum = fila.Cells[1].Text;// columna this.mi_array.Add (colum); }// for longitud = mi_array.Count; aciertos = 0; fallos = 0; } public int incremento_Aciertos(){ this.aciertos = this.aciertos + 1; return this.aciertos; } public int incremento_Fallos() {
  • 50.
    this.fallos = this.fallos+ 1; return this.fallos; } } Web service, usado para el extender autoComplete de Ajax que necesita de un servicio Web para su correcto funcionamiento [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.Web.Script.Services.ScriptService] public class AutoComplete : System.Web.Services.WebService { private static string[] ArrayPalabras = null; public AutoComplete() { } [WebMethod] public string[] InformacionAutoComp(string prefixText, int count) { String cadenaOleDb; OleDbConnection cn; OleDbCommand cmd; cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" +Server.MapPath (@"App_DataBDProyecto.mdb") + ";"); cadenaOleDb = "select Nombre_Usuario, Apellidos from datosPersonales "; cmd = new OleDbCommand(cadenaOleDb, cn); OleDbDataAdapter adp = new OleDbDataAdapter(cadenaOleDb, cn); DataSet ds = new DataSet(); adp.Fill(ds); adp.Dispose(); cn.Close(); Int32 numFilas = ds.Tables[0].Rows.Count; string[] temp = new string[numFilas]; for (Int32 i = 0; i < numFilas; i++) { temp[i] = ds.Tables[0].Rows[i][0].ToString(); } Array.Sort(temp, new CaseInsensitiveComparer()); ArrayPalabras = temp; int index = Array.BinarySearch(ArrayPalabras, prefixText,
  • 51.
    new CaseInsensitiveComparer()); if (index< 0) { index = ~index; } int cuenta; for (cuenta = 0; cuenta < count && index + cuenta < ArrayPalabras.Length; cuenta++) { if (!ArrayPalabras[index + cuenta].StartsWith(prefixText, StringComparison.CurrentCultureIgnoreCase)) { break; } } String[] Solucion = new string[cuenta]; if (cuenta > 0) { Array.Copy(ArrayPalabras, index, Solucion, 0, cuenta); } return Solucion; } } En lineas generales, la herramienta web esta formada por formularios webs aspx, que se comunican con nuestro sistama de base de datos. Es imprescindible para poder ejecutar este proyecto tener instalado el servidor IIS de Microsft. Internet Information Server es un servidor Web, que incluye los servicios de: HTTP, HTTPS, FTP, SMTP (correo saliente) y NNTP (grupos de noticias). Además es capaz de ejecutar varios motores de script como: ASP, PHP, Cold Fusion, etc… Por defecto el servidor IIS no viene al instalar el sistema operativo, para ello tenemos que ir a Mi PC -> Panel de Control -> Añadir o quitar programas y seleccionar "añadir y quitar componentes de Windows”, seleccionar Internet Information Server, nos pedirá el CD de Windows XP para copiar e instalar el software. Una vez instalado para acceder al panel de control del IIS tenemos que ir a: Inicio -> Programas -> Herramientas de administración - > Internet Information Server, obtendremos la, que es el panel de control para el IIS desde donde administraremos, instalaremos y modificaremos nuestro proyecto Web. El directorio del Web por defecto es c:inetpubwwwroot
  • 52.
    Figura 14. Vistaen el explorador de Windows del directorio donde se guarda nuestro proyecto en el IIS Para acceder al proyecto, tendríamos que entrar en los directorios Inetpub ->wwwroot->gonru Que es la carpeta que contiene todo el contenido del proyecto MenPas La carpeta administrador: contiene todos los formularios relacionados con la administración de nuestra aplicación. La carpeta App_code: contiene todas las clases que se han implementado. La carpeta App_Data: Encontramos en ella la base de datos del proyecto. Las carpetas Eval individual y organizacional contienen respectivamente los cuestionarios individuales y los relacionados con los diferentes centros. Las carpetas imágenes, images y gif animados contienen las diferentes imágenes usadas en el proyecto. La implementación de la base de datos se ha realizado en el programa Microsoft Access, es un programa Sistema de gestión de base de datos relacional creado y modificado por Microsoft para uso personal de pequeñas organizaciones. 6. Conclusiones y trabajos futuros 6.1 Principales problemas encontrados en el desarrollo del proyecto
  • 53.
    La adaptación ala plataforma, al lenguaje, eran en principio uno de los principales problemas para el desarrollo, pero al comenzar uno de los problemas mas grabes fue hardware, ya que el portátil donde se realizaba el proyecto tenia instalado Windows XP Home, y para la instalación de Visual Studio .NET 2005 se necesitaba tener instalado SP2. Así que se instaló Windows XP Profesional SP2. Otro problema es el consumo de memoria, el equipo trae 256 megas de RAM, lo que hace que a la hora de compilar y ejecutar la aplicación vaya más lento de lo normal. Referente a la parte software, el uso de la plataforma Visual Studio .NET 2005 no ha sido muy complicada. En la realización de la aplicación modrian es donde hemos encontrado más dificultades a la hora de tener un funcionamiento correcto. Al principio se usaban variables estáticas, y al probar el proyecto en el servidor IIS con varios usuarios conectados, los datos de las variables estáticas se modificaban, cambiando la configuración de la aplicación, así que se optó por el uso de variables de sesión, explicadas en capítulos anteriores, lo que nos solucionó el problema. Dentro de esta aplicación, también el crear controles en tiempo de ejecución fue algo complejo, solucionando el problema creando clases que heredaran de la clase botton y con la manipulación de delegados. Otro problema encontrado es el encontrar una herramienta para el uso de gráficas que sea de licencia gratuita, se había probado con algunas pero tenían un periodo de pruebas de tres meses, o no te dejaban usar toda la funcionalidad que trae la versión de pago. Se ha usado la librería de uso gratuito WebCharts, que nos muestra los resultados en una grafica, guardándose como una imagen con extensión JPG o PNG en el directorio WebChart que podemos encontrar el nuestro proyecto. 6.2. Conclusiones Su realización en la plataforma .NET ha sido un reto a nivel individual, ya que me ha formado bastante, solucionando los posibles errores y dificultades que surgían, bien en la Web o con tutorías. Hemos implementado una herramienta Web capaz de evaluar a través de Internet a deportistas y entornos deportivos, mediante la implementación de los diferentes cuestionarios desarrollados en el proyecto. Para ello se ha intentado usar un diseño lo más amigable y fácil de utilizar para que el usuario acceda de forma cómoda a la aplicación y pueda realizar las pruebas oportunas. En nuestra aplicación el usuario puede obtener los resultados de los cuestionarios a la finalización de los mismos, y el administrador podrá consultar los datos obtenidos por los diferentes usuarios, o categorías, cobrando gran importancia el estudio estadístico que se hacen de dichos resultados, que se pueden exportar a ficheros de Word o Excel para mayor comodidad y mostrar en graficas.
  • 54.
    La ventaja deesta aplicación Web es que tanto el usuario como el administrador pueden acceder desde cualquier lugar del mundo donde tenga acceso a Internet, que hoy día y gracias a las nuevas tecnologías podemos encontrar un acceso en cualquier ciudad del planeta y poder realizar un cuestionario. Los conocimientos adquiridos durante la carrera, me han ayudado a poder planificar y desarrollar el proyecto. Ha sido un reto el trabajar con la plataforma .NET, usar IIS, Microsoft Acces, ASP .NET, Ajax, pero gracias a foros, manuales, libros, y a los directores del proyecto se ha podido realizar el proyecto de un modo muy ameno. Al terminar el proyecto uno adquiere unos conocimientos que le pueden servir tanto para el mundo laboral como personalmente, aportando formación. 6.3. Posibles mejoras del programa Como toda aplicación web, una vez que sale al mercado o se termina ya queda antigua. Ya que no paran de salir nuevas herramientas tecnologías diseños que la pueden mejorar drásticamente. Una de las mejoras que se podría realizar es la realización de diferentes plantillas para que el administrador pueda realizar los cuestionarios que crea oportunos, añadiéndolos a la lista de cuestionarios, pero esto es bastante complejo, ya que se podría haber realizado por ejemplo una plantilla para crear cuestionarios de verdadero y falso, pero en el ámbito de la psicología casi todos los cuestionarios tienen unas tablas, varemos y datos estadísticos que hay que cotejar para que den los resultados deseados. Un ejemplo de ellos es el Poms, y el Csai2 donde hay que tener en cuenta las categorías del usuario tales como sexo, edad, lo que complica hacer una plantilla para todos los cuestionarios. Otra posible mejora es cambiar el tipo de herramienta usada para mostrar los gráficos, (aunque sea de pago) ya que hoy día podemos encontrar productos que nos ofrece un abanico de posibilidades a la hora de elegir tipos de graficas, con un diseño muy superior al que nos ofrece el usado en el proyecto (WebCharts). Se pueden añadir más campos a las tablas de los cuestionarios para controlar que un cuestionario se realiza en un determinado tiempo. La creación de servicios Web para el proyecto, que contiene un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones. Bibliografía • Ceballos, F. J. (2007). “Enciclopedia de Microsoft Visual C#” (2º edición). Madrid: Ra-Ma. • David, V. y Julián, T. (2002). “Visual Studio .NET”. Madrid: Anaya Multimedia. • Eysenck, H.J. y Eysenck, S.B.G. (1975). “Manual of the Eysenck Personality Questionnaire”. Londres: Hodder y Stoughton.
  • 55.
    Eysenck, H.J. y Eysenck, S.B.G. (1975). “Manual of the Eysenck Personality Questionnaire”. Londres: Hodder y Stoughton. • Eysenck, H.J. y Eysenck, S.B.G. (1989). “Cuestionario de personalidad para niños” EPQ-J. Adp. Española. Madrid: TEA Ediciones. (Orig. 1975). • Eysenck, H.J. y Eysenck, S.B.G. (1989).”Cuestionario de personalidad para niños” EPQ-J. Adp. Española. Madrid: TEA Ediciones. (Orig. 1975). • Harris, D.V.; Harris, B.L. (1984). “The athlete's guide to Sports Psychology: Mental Skills for Physical people. Champaign,IL”: Leisure Press. (Traducción española, Psicología del deporte. Integración mente-cuerpo, Barcelona: Hispano Europea, 1987). • Harris, D.V.; Harris, B.L. (1984). “The athlete's guide to Sports Psychology: Mental Skills for Physical people. Champaign,IL”. Leisure Press. (Traducción española, Psicología del deporte. Integración mente-cuerpo, Barcelona: Hispano Europea, 1987). • Herbert, S. (2002). “Manual de referencia C#“ Madrid: MC Graw Hill • Hernández Mendo, A. (2001). “Cuestionario para valoración de actividades de ocio y tiempo libre”. Anuario de Psicología, 32(3), 67-80. • Hernández Mendo, A. (2001). “Un cuestionario para evaluar la calidad en programas de actividad física”. Revista de Psicología del Deporte, 10, 179-196. • Hernández Mendo, A. y Ramos, R. (1995a). “Aplicación informática para evaluación y entrenamiento de la atención en psicología del deporte”. Psicothema, 7(3), 527-529. • Hernández Mendo, A. y Ramos, R. (2000). “El uso de la informática en la Psicología del Deporte”. Lecturas: EF y Deportes. Revista Digital, 19, marzo http://www.efdeportes.com/efd19/infpsi.htm[Consulta: 23 de marzo de 2000]. • Hernández Mendo, A. y Ramos, R. (1995). “Informatización del Profile of Moode States de McNair, Lorr y Dropleman”. Aplicaciones. Revista de Psicología del Deporte, 7-8, 31-50. • Hernández Mendo, A. y Ramos, R. (1995b). “Informatización de la evaluación y entrenamiento de la atención”. Anales de Psicología, 11(2), 183-191. • Julian, T. y David, V. (2002). “La Biblia de Visual Studio .NET”. Madrid: Anaya Multimedia. • Marteens, I. (2004). “La cara oculta de C#”. Madrid: Intutive Sight. • Martens, R. (1977). “Sport Competition Anxiety Test. Champaign”, IL: Human Kinetics. • Martens, R. (1982). “Sport competition anxiety test. Champaign”, Illinois : Human Kinetics. • Martens, R; Burton, D; Vealey, R.S; Bump, L.A. & Smith, D.E. (1990). “Development and validation of the Competitive State Anxiety Inventory-2”. En R. Martens, R.S. Vealey, & D.Burton,Competitive anxiety in sport (pp.117-190). Champaign, tL: Human Kinetics. • Martín Sierra, A. (2007). “Desarrollo de aplicaciones Web con ASP .NET 2.0”. Madrid: Ra-Ma. • Maslach, C. y Jackson, S. E. (1986). “Maslach Burnout Inventory” (2ª Ed., 1ª Ed. de 981). Palo Alto, California: Consulting Psychologists Press. • McNair, D., Lorr, M. & Droppleman, L. (1971). “Profile of Mood States Manual”. San Diego: Educational and Industrial Testing Service.
  • 56.
    Morales Sánchez, V., Hernández Mendo, A. y Blanco, A. (2005). “Evaluación de la calidad en los programas de actividad física”. Psicothema, 17(2), 292-298. • Morales Sánchez, V., Hernández Mendo, A. y Blanco, A. (2009). “Evaluación de la calidad en organizaciones deportivas”: adaptación del modelo Servqual. Revista de Psicología del Deporte, 18(2), 137-150. • Parasuraman, A., Berry, L. y Zeithaml, V. (1988). Servqual: “A multiple-item sacale for measuring consumer perceptions of service quality”. Journal of Retailing, 64, 12-40. • Parasuraman, A., Berry, L. y Zeithaml, V. (1991). “Refinement and reassessment of the servqual scale”. Journal of retailing, 67, 420-450. • Parasuraman, A., Berry, L. y Zeithaml, V. (1993). “More on improving service quality measurement”. Journal of Retailing, 69, 140-147. • Parasuraman, A., Zeitham1, V.A. y Berry, L.L. (1994b).“Reassessment of Expectations as a Comparison Standard in Measuring Service Quality: implications for Further Research”. Journal of Marketing, 58, 111-124. • Parasuraman, A., Zeithaml, V. A. y Berry, L. L. (1988). Servqual: “A Multiple Item Scale for Measuring Consumer Perceptions of Service Quality”. Journal of Ratailing, 12-40. • Parasuraman, A., Zeithaml, V. y Berry, L (1991). “Refinement and reassessment of the Servqual scale”. Journal of Retailing, 67 (4), 420-450. • Parasuraman, A., Zeithaml, V. y Berry, L. (1985). “A Conceptual Model of Service Quality and its Implications for Future Research”. Journal of Marketing, 49, 41-50. • Parasuraman, A., Zeithaml, V. y Berry, L. (1988). Servqual: “A multiple-item scale for measuring consumer perceptions of service quality”. Journal of Retailing, 64, 12-40. • Parasuraman, A., Zeithaml, V. y Berry, L. (1994a).“Reassessment of expectations as a comparison standard in measuring service quality: implications for further research”. Journal of Marketing, 58, 111-124. • Parasuraman, A., Zeithaml, V. y Berry, L. (1994b). Alternative scales for measuring service quality: a comparative assessment based on psychometric and diagnostic criteria. Journal of Retailing, 70, 201-230. • Parasuraman, A., Zeithaml, V.A. y Berry, L.L. (1994a). “Alternative Scales for Measuring Service Quality: A comparative Assessment Based on Psychometric and Diagnostic Criteria”. Journal of Retailing, 70 (3), 201-230. • Richardson, P. S., Dick, A.S. y Jain, A. K. (1994). Extrinsic and intrinsic cue effects on perceptions of store brand quality. Journal of Marketing, 58, 28-36. • Ridley Stroop, J. (1935). “Studies of interference in serial verbal reactions”. Journal of Experimental Psychology, 18, 643-662. • Rodríguez Gómez, M. y Besteiro Gorostizaga, M. A. (2002). “Desarrollo de aplicaciones .NET con Visual C#”. Madrid: Mc Graw Hill. • Spielberger, D.D; Gorsuch, R.L; & Luschene, r.E. (1970). “Manual for the state- trait anxiety inventory (self-evaluation questionnaire)”. Palo Alto, CA: Consulting Psychologists Press. • Zeithaml, V. (1987). “Defining and relating price, perceived quality and perceived value”, 87-101. Cambridge: Marketing Science Institute. • Zeithaml, V. (1988). “Consumer perceptions of price, quality, and value: a means-end model and synthesis of evidence”. Journal o/marketing, 52, 2-22.
  • 57.
    Zeithaml, V., Berry, L. y Parasuraman, A. (1988). “Communication and control processes in the delivery of service quality”. Journal of Marketing, 52 (2), 35- 48. • Zeithaml, V., Berry, L. y Parasuraman, A. (1988). “Communication and control processes in the delivery of service quality”. Journal of Marketing, 52, 35-48. • Zeithaml, V., Berry, L. y Parasuraman, A. (1993). “The nature and determinants of customer expectations of service”. Journal of the Academy of Marketing Science, 21 (1), 1-12. • Zeithaml, V., Berry, L. y Parasuraman, A. (1996). “The behavioural consequence~ of service quality”. Journal of Marketing, 60, 31-46. • Zeithaml, V., Parasuraman, A. y Berry L. (1993). “Calidad total en la gestión de servicios. Cómo lograr el equilibrio entre las percepciones y las expectativas de los consumidores”. Madrid: Díaz de Santos. • Zeithaml, V., Parasuraman, A. y Berry, L. (1985). “Problems and strategies in service marketing”. Journal of Marketing, 49, 33-46. • Zeithaml, V.A., Parasuraman, A. y Berry, L.L. (1990). “Delivering Quality service. Balancing Customer Perceptions and Expectations”. New York: The Free Press. • Zeki, S. & Shipp, S. (1988). “The functional logic of cortical connections. Nature”, 335 (6188), 311-317. • Zeki, S. (1992). “La imagen visual en la mente y en el cerebro. Investigación y Ciencia”, 194, 27-35.