Herramienta software para la evaluación psicosocial de deportistas y entornos deportivos |
|||
Universidad de Málaga (España) |
Sergio Luis González Ruiz Antonio Hernández Mendo José Luis Pastrana Brincones |
|
|
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:
IPED: Cuestionario para evolución de perfiles psicológicos de ejecución deportiva (Hernández Mendo, 2006).
POMS: Cuestionario de Evaluación de Estados de Humor (McNair, Lorr, Droppleman, 1971; Hernández Mendo y Ramos, 1995).
ICPAF: Cuestionario para evaluación de la calidad de programas deportivos (Hernández Mendo, 2001; Morales Sánchez, Hernández Mendo, y Blanco, 2005).
CUVACOT: Cuestionario para Valoración de Actividades de Ocio y Tiempo libre (Hernández Mendo, 2001).
BURNOUT: Cuestionario que evalúa el estrés en el trabajo. (Maslach y Jackson, 1986).
EPI: Cuestionario de Personalidad para adultos (Eysenck, y Eysenck, 1975).
MODRIAN: Cuadricula coloreada (Zeki y Shipp, 1988; Zeki, 1992; Hernández Mendo, y Ramos, 2000).
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).
CSAI 2: Inventario del Estado de Ansiedad en Competición – 2. (Martens, 1982; Martens, Burton, Vealey, Bump & Smith, 1990).
STAI: Cuestionario de Ansiedad Estado-Rasgo. (Spielberger, Gorsuch, & Luschene, 1970).
SCAT: Sport Competition Anxiety Test (Martens, 1977).
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
ADO .NET para el acceso a datos sin rigidez.
ASP .NET para aplicaciones Web y servicios Web XML.
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:
Espacio de nombres
Utilidad de los tipos
de datos que contiene
System
Tipos muy frecuentemente usados, como los tipos básicos, tablas, excepciones, fechas, números aleatorios, recolector de basura, entrada/salida en consola, etc.
System.Collections
Colecciones de datos de uso común como pilas, colas, listas, diccionarios, etc.
System.Data
Manipulación de bases de datos. Forman la denominada arquitectura ADO .NET.
System.IO
Manipulación de ficheros y otros flujos de datos.
System .NET
Realización de comunicaciones en red.
System.Reflection
Acceso a los metadatos que acompañan a los módulos de código.
System.Runtime.Remoting
Acceso a objetos remotos.
System.Security
Acceso a la política de seguridad en que se basa el CLR.
System.Threading
Manipulación de hilos.
System.Web.UI.WebControls
Creación de interfaces de usuario basadas en ventanas para aplicaciones Web.
System.Windows.Forms
Creación de interfaces de usuario basadas en 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.
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 objeto Response 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 clase HttpRequest 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.
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.
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
Usuario provoca un evento.
Se crea y configura un objeto XMLHttpRequest.
El objeto XMLHttpRequest realiza una llamada al servidor.
La petición se procesa en el servidor.
El servidor retorna un documento XML que contienen el resultado.
El objeto XMLHttpRequest llama a la función callback() y procesa el resultado.
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.
Animation
CascadingDropDown
CollapsablePanel
ConfirmButton
DragPanel
DropDown
DropShadow
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
Descripción
El usuario debe de introducir en los campos nombre de usuario y contraseña los valores que tenga asignados para tener acceso a la aplicación y poder realizar los cuestionarios
Precondiciones
El usuario debe estar registrado, y debe acceder a la página de login de nuestra aplicación
Escenario de éxito
El usuario introduce el nombre de usuario y contraseña y son los correctos.
El sistema acepta la clave.
El sistema nos muestra el tipo de cuestionario a realizar y la parte administrativa si es administrador.
Escenario de error 1
El usuario introduce el nombre de usuario y contraseña.
El sistema nos da un error, debido a que el nombre de usuario no esta registrado.
El sistema nos informa mediante un mensaje de que el nombre de usuario no es el adecuado
Escenario de error 2
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 correcta.
El sistema nos informa mediante un mensaje de que la contraseña es incorrecta para ese usuario
Escenario de error 3
El usuario deja en blanco uno de los dos campos o los dos.
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
Precondiciones
El usuario ha entrado en la ventana de registro de usuarios, porque no estaba registrado en nuestra aplicación.
Escenario de éxito
El usuario rellena cada uno de los campos que se encuentran en el formulario de registro de usuarios, el nombre de usuario no coincide con uno ya registrado en nuestra base de datos.
Los campos numéricos son rellenados correctamente
Escenario de error1
El nombre de usuario introducido ya está registrado, por lo que debemos cambiar dicho nombre
Escenario de error2
Hay campos que están vacíos y son obligatorios para poder registrarse en nuestra aplicación. El usuario deberá rellenar los campos que se dejaron en blanco
Escenario de error3
No se ha introducido un correo electrónico correcto al no pertenecer el símbolo @ al correo electrónico.
Nombre caso de uso
Hacer cuestionario
Descripción
El usuario ya registrado realiza uno de los cuestionarios elegidos de nuestra aplicación
Precondiciones
El usuario tiene que estar registrado
Escenario de éxito
El usuario realiza el cuestionario sin dejar en blanco o seleccionar la respuesta para cada una de las afirmaciones.
Presiona el botón Solución.
Se muestran los resultados obtenidos
Escenario de error
El usuario deja casillas sin rellenar
Presiona el botón solución
Se muestra un mensaje de error informándonos de que se han dejado casillas sin rellenar.
Nombre caso de uso
Crear nuevo centro
Descripción
Rellenar una serie de campos sobre los datos del centro sobre el que se va a realizar el cuestionario organizacional
Precondiciones
El usuario debe de estar registrado y haber elegido la opción de cuestionarios organizacionales para poder rellenar los campos solicitados en el formulario.
Escenario de éxito
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 base de datos.
Los campos numéricos son rellenados correctamente.
No se deja ningún campo en blanco.
Escenario de error 1
El nombre del centro introducido ya está registrado, por lo que debemos cambiar dicho nombre
Escenario de error 2
Hay campos que están vacíos y son obligatorios para poder registrarse en nuestra aplicación. El usuario deberá rellenar los campos que se dejaron en blanco
Nombre caso de uso
Modificar datos
Descripción
Se pueden modificar los datos existentes en las tablas, en los formularios administrativos
Precondiciones
Tener perfil de administrador y entrar en la aplicación.
Escenario de éxito
El administrador pulsa la opción de modificar, los campos se transforman en editables, modificando los campos que estime oportuno.
Para completar la acción, hay que pulsar sobre actualizar, guardándose en la base de datos los datos modificados
Escenario de error 1
Deja algún campo obligatorio sin rellenar
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 != " ")// 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_Data\BDProyecto.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:\inetpub\wwwroot
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.
Búsqueda personalizada
|
|
revista
digital · Año 15 · N° 144 | Buenos Aires,
Mayo de 2010 |