SlideShare a Scribd company logo
1 of 57
Download to read offline
Herramienta software para la
      evaluación
      psicosocial de deportistas y
      entornos deportivos
                                                                         Sergio Luis González Ruiz
                                                                         hergio@gmail.com
          http://www.menpas.com                                          Antonio Hernández Mendo
          Universidad de Málaga                                          mendo@uma.es
          (España)                                                       José    Luis              Pastrana
                                                                         Brincones
                                                                         pastrana@lcc.uma.es

          Resumen
                 El objetivo de esta herramienta software es el apoyo a la evaluación del comportamiento
          psicosocial de los deportistas y de los usuarios de entornos deportivos, a través de la implementación
          de unos cuestionarios y tareas psicológicas donde se evalúa su conducta como deportista (o
          prácticamente de actividad deportiva) y en relación al entorno, así como su comportamiento de
          usuario. La importancia de esta herramienta radica en tres puntos fundamentales. Por un lado la
          rapidez en la evaluación tanto de deportistas como de organizaciones, instituciones o entornos y su
          consecuente inmediatez en la obtención de los resultados de dicha evaluación. En segundo lugar cubre
          una necesidad existente dentro de la psicología on-line como es la evaluación en Psicología del
          Deporte, no sólo de deportistas sino de organizaciones y entornos deportivos. El tercero, y quizás más
          ambicioso, la elaboración de una base de datos de baremación de cuestionarios e inventarios aceptados
          por la comunidad científica internacional de carácter supranacional. No existe un lugar on line con
          carácter profesional y gratuito donde puedan acceder los profesional y ofrezcan pruebas psicológicas
          con información de las propiedades psicométricas y garantías metodológicas.
                 Palabra claves: Software. Evaluación psicosocial. Deportistas. Entornos deportivos

          http://www.efdeportes.com/ Revista Digital - Buenos Aires - Año 15 - Nº 144 - Mayo de 2010



1/1


Introducción

   La importancia de esta herramienta radica en tres puntos fundamentales. Por un lado la
rapidez en la evaluación tanto de deportistas como de organizaciones, instituciones o entornos
y su consecuente inmediatez en la obtención de los resultados de dicha evaluación. En segundo
lugar cubre una necesidad existente dentro de la psicología on-line como es la evaluación en
Psicología del Deporte, no sólo de deportistas sino de organizaciones y entornos deportivos. El
tercero, y quizás más ambicioso, la elaboración de una base de datos de baremación de
cuestionarios e inventarios aceptados por la comunidad científica internacional de carácter
supranacional.

   Gracias a las nuevas tecnologías podemos ofrecer a los usuarios la posibilidad de realizar on-
line cualquiera de los cuestionarios o aplicaciones que se describen en este proyecto.
Simplemente hace falta una conexión a Internet y darse de alta en la aplicación y podrá
acceder de forma cómoda y amigable a la realización de las pruebas que crea oportunas,
obteniendo los resultados de las mismas al finalizar la prueba seleccionada.

   El objetivo de esta herramienta software es el apoyo a la evaluación del comportamiento
psicosocial de los deportistas y de los usuarios de entornos deportivos, a través de la
implementación de unos inventarios psicológicos y programas donde se evalúa su conducta
como deportista y en relación al entorno, así como su comportamiento de usuario.
Por otro lado, otro objetivo es la familiarización por parte del programador de las tecnologías
usadas para dicho desarrollo del proyecto, basándose principalmente en la tecnología .NET. El
uso de esta tecnología ha sido una gran experiencia, con un entorno de desarrollo muy
amigable y fácil de usar. Esta tecnología la veremos en capítulos posteriores.

  Entre estos inventarios, tareas y programas se encuentran:

            1. IPED: Cuestionario para evolución de perfiles psicológicos de ejecución
                deportiva (Hernández Mendo, 2006).
            2. POMS: Cuestionario de Evaluación de Estados de Humor (McNair, Lorr,
                Droppleman, 1971; Hernández Mendo y Ramos, 1995).
            3. ICPAF: Cuestionario para evaluación de la calidad de programas deportivos
                (Hernández Mendo, 2001; Morales Sánchez, Hernández Mendo, y Blanco,
                2005).
            4. CUVACOT: Cuestionario para Valoración de Actividades de Ocio y Tiempo libre
                (Hernández Mendo, 2001).
            5. BURNOUT: Cuestionario que evalúa el estrés en el trabajo. (Maslach y
                Jackson, 1986).
            6. EPI: Cuestionario de Personalidad para adultos (Eysenck, y Eysenck, 1975).
            7. MODRIAN: Cuadricula coloreada (Zeki y Shipp, 1988; Zeki, 1992; Hernández
                Mendo, y Ramos, 2000).
            8. EFECTO STROOP: interferencia semántica producida como consecuencia de la
                automaticidad en la lectura. Esto ocurre cuando el significado de la palabra
                interfiere en la tarea de nombrar, por ejemplo, el color de la tinta en que está
                escrita (Ridley Stroop, 1935).
            9. CSAI 2: Inventario del Estado de Ansiedad en Competición – 2. (Martens,
                1982; Martens, Burton, Vealey, Bump & Smith, 1990).
            10. STAI: Cuestionario de Ansiedad Estado-Rasgo. (Spielberger, Gorsuch, &
                Luschene, 1970).
            11. SCAT: Sport Competition Anxiety Test (Martens, 1977).
            12. SERVQUAL: Cuestionario que evalúa las características de los servicios
                deportivos (Parasuraman, Zeithaml y Berry, 1985, 1988; Morales Sánchez,
                Hernández Mendo y Blanco, 2009).

   Los datos obtenidos de los inventarios serán almacenados en una base de datos, que será
exportable a distintos paquetes estadísticos. A partir de esta base de datos se realizará una
interpretación gráfica de los valores obtenidos.

   Se pretende controlar que el acceso a estos inventarios y programas se realice una vez que
el usuario se ha dado de alta en nuestra base de datos rellenando previamente un formulario y
comprobando en la medida de lo posible que los datos introducidos son correctos.

   El acceso a la aplicación y a los resultados obtenidos por los usuarios sólo podrán ser
realizado por el gestor de la aplicación, pudiendo consultar por diferentes categorías como
nacionalidad, grupo de personas (p.e. deporte practicado), género, edad, profesión u otros
campos. Estos datos se interpretarán gráficamente o a través de otros mecanismos

   Un objetivo importante además de la funcionalidad óptima, es construir un entorno amigable
y cómodo favoreciendo de esta manera el acercamiento del usuario al mismo.
Se trata, por tanto, de conseguir que el sitio Web se convierta en un lugar de obligada
consulta tanto para profesionales de la materia como para la realización de los inventarios y
programas por parte de usuarios, con la gran ventaja de que se puede acceder cómodamente
desde casa con sólo poseer conexión a Internet.

1.     Etapas de desarrollo del proyecto

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

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

1.2.     Medios materiales y herramientas que se pretenden utilizar

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

2.     Introducción a la plataforma .NET

2.1.     Introducción

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

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

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

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

2.2.   Versiones .NET

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

                    •   La primera versión la 1.0 fue lanzada a mediados de 2001. En esta
                        versión se produjo un cambio sustancial, puesto que supuso la
                        introducción de la plataforma .NET de Microsoft.
                    •   Visual Studio .NET 2002 supuso también la introducción del lenguaje
                        C#, un lenguaje nuevo diseñado específicamente para la plataforma
                        .NET, basado en C++ y Java. Se presentó también el lenguaje J#
                        sucesor de J++ el cual, en lugar de ejecutarse en una máquina virtual
                        de Java, se ejecuta únicamente en el framework .NET. El lenguaje
                        Visual Basic fue remodelado completamente y evolucionó para
                        adaptarse a las nuevas características de la plataforma.
                    •   A esta le sucedió la versión 1.1. Visual Studio .NET 2003 supone una
                        actualización menor de Visual Studio .NET. Se actualiza el .NET
                        Framework a la versión 1.1. También se añade soporte con el fin de
                        escribir aplicaciones para determinados dispositivos móviles, ya sea con
                        ASP .NET o con el .NET Compact Framework. Además el compilador de
Visual C++ se mejora para cumplir con más estándares, el Visual C++
                        Toolkit 2003.
                    •   Después nos encontramos con Net 2.0 Visual Studio 2005 se empezó a
                        comercializar a través de Internet a partir del 4 de Octubre de 2005 y
                        llegó a los comercios a finales del mes de Octubre en inglés. En
                        castellano no salió hasta el 4 de Febrero de 2006. (Esta es la versión
                        usada para este proyecto.)
                    •   Más recientemente NET 3.5 incluye biblioteca ASP .NET AJAX para
                        desarrollar aplicaciones Web más eficientes, interactivas y altamente
                        personalizadas que funcionen para todos los navegadores más
                        populares y utilicen las últimas tecnologías y herramientas Web,
                        incluyendo Silverlight y Popfly. Visual Studio 2008 fue liberado (RTM) el
                        17 de Noviembre de 2007 en inglés, mientras que la versión en
                        castellano no fue liberada hasta el 2 de Febrero de 2008.
                    •   El nuevo framework está diseñado para aprovechar las ventajas que
                        ofrece el novedoso sistema operativo "Windows Vista" a través de sus
                        subsistemas "Windows Communication Foundation" (WCF) y "Windows
                        Presentation Foundation" (WPF)[.] El primero tiene como objetivo la
                        construcción de aplicaciones orientadas a servicios mientras que el
                        último apunta a la creación de interfaces de usuarios más dinámicas
                        que las conocidas hasta el momento.

2.3.   Características principales

   NET Framework es el componente de Microsoft Windows que permite crear y ejecutar la
próxima generación de aplicaciones de software y servicios Web XML, componentes que
facilitan la integración compartiendo datos e información a través de la red mediante protocolos
estándar independientes de la plataforma.

  .NET Framework se compone de dos elementos principales:

                    •   Common Language Runtime (Lenguaje Común de Ejecución).
                    •   Un conjunto unificado de bibliotecas de clases, tales como
                            o ADO .NET para el acceso a datos sin rigidez.
                            o ASP .NET para aplicaciones Web y servicios Web XML.
                            o Windows forms para aplicaciones cliente inteligentes.

    El Framework permite una arquitectura flexible, ya que usa los servicios Web como
mecanismo de comunicación nativo. Esto facilita la integración de aplicaciones a través de
intranets o de Internet, a la vez que proporciona la posibilidad de aprovechar las aplicaciones y
los recursos de programación y de tecnologías de la información existentes.

    Promueve un desarrollo más rápido pudiendo emplear uno de los muchos lenguajes de
programación que admite para generar todo tipo de aplicaciones basadas en Windows, tales
como servicios Web XML, aplicaciones cliente inteligentes o aplicaciones Web para dispositivos,
PCs y servidores. Además permite la integración de aplicaciones escritas en distintos lenguajes.
Para dar soporte a esta ventaja del Framework, Microsoft desarrolló el entorno de desarrollo
integrado (IDE) Visual Studio .NET. Además utiliza un diseño totalmente basado en
componentes y sin estructura predefinida, por lo que permite a los programadores centrarse en
escribir la lógica de negocio. Los programadores pueden utilizar docenas de controles que
encapsulan tareas comunes como conectar bases de datos o mostrar una vista preliminar,
evitando tener que escribir en lenguaje de definición de interfaz (IDL: Interface Definition
Language).

   Mejora el rendimiento de las aplicaciones Web típicas gracias a ASP .NET, que incorpora
funciones avanzadas de compilación y almacenamiento en caché. El Framework administra la
memoria, los procesos y los subprocesos con el objeto de evitar las pérdidas de memoria.

   Incrementa la seguridad con funciones tales como el control exhaustivo a nivel de método
sobre las tareas que las aplicaciones pueden llevar a cabo o no, basándose en quién escribió el
código, el propósito del mismo, desde dónde se ha instalado y quién está intentando ejecutarlo.

2.4.   Arquitectura .NET

    La nueva tecnología de Microsoft ofrece soluciones a los problemas de programación
actuales, como son la administración de código o la programación para Internet. Para
aprovechar al máximo las características de .NET es necesario entender la arquitectura básica
en la que esta implementada esta tecnología y así beneficiarse de todas las características que
ofrece esta nueva plataforma.

   El Framework de .NET es una infraestructura sobre la que se reúne todo un conjunto de
lenguajes y servicios que simplifican enormemente el desarrollo de aplicaciones. Mediante esta
herramienta se ofrece un entorno de ejecución altamente distribuido, que permite crear
aplicaciones robustas y escalables.

   La plataforma .NET se ejecuta sobre la plataforma hardware. Uno de sus componentes es el
CLR. Todos los otros componentes se ejecutan sobre el CLR y de esta forma son
independientes de la plataforma hardware (siempre que ésta sea Windows).

    Sobre el CLR se ejecutan una serie de librerías que son utilizadas por los programas,
simplificando el desarrollo al ofrecer una serie de servicios ya programados, listos para
reutilizar. Hay una librería básica que contiene soporte para estructuras de datos,
interoperabilidad con el código .NET, entre otros servicios. Hay librerías para acceso a bases de
datos y XML así como para interfaz gráfica, tanto para el escritorio como para el Web.

   Estas librerías son usadas por los programas compilados. Entre estos programas podemos
destacar a los compiladores para los diferentes lenguajes .NET, que traducen los programas en
cada uno de estos lenguajes a programas compilados.

   La plataforma .NET es gratuita y libremente distribuible. Es un requisito imprescindible para
desarrollar y ejecutar los programas .NET y su curva de aprendizaje es lenta, debido a la gran
cantidad de clases existentes en las diferentes librerías.
Figura 1. Arquitectura de la plataforma .NET


2.5.     CLR, el núcleo del Framework

    El Common Language Runtime o CLR (Lenguaje común en tiempo de ejecución) es el motor
de ejecución de las aplicaciones .NET, que se encarga de ejecutar todo el código .NET. Es la
parte encargada de traducir en tiempo de ejecución el código intermedio de las aplicaciones y
librerías a código máquina, adaptándolo a las características del sistema operativo donde se
está produciendo la ejecución.

    Es el componente de la máquina virtual del .NET Framework de Microsoft. La
implementación del estándar Common Language Infrastructure que define un ambiente de
ejecución para los códigos de los programas. El CLR ejecuta una forma de código intermedio
(bytecode) llamada Common Intermediate Language (CIL, anteriormente conocido como MSIL).

   A pesar de que algunas implementaciones del Common Language Infrastructure se ejecutan
en sistemas operativos no Windows, el CLR se ejecuta sólo en sistemas operativos de Microsoft
Windows.

   Además de la integración de lenguajes, también se encarga del cumplimiento de las normas
de seguridad y la administración de la memoria, los procesos y los subprocesos entre otros.

   Las principales características y servicios que ofrece el CLR son:

                          •    Eliminación del “infierno de las DLLs”: En la plataforma .NET
                               desaparece el problema conocido como “infierno de las DLLs” que se
                               da en los sistemas operativos actuales de la familia Windows, problema
                               que consiste en que al sustituirse versiones viejas de DLLs compartidas
                               por versiones nuevas puede que aplicaciones que fueron diseñadas
                               para ser ejecutadas usando las viejas dejen de funcionar si las nuevas
                               no son 100% compatibles con las anteriores.
                          •    Modelo de programación consistente: A todos los servicios y
                               facilidades ofrecidos por el CLR se accede de la misma forma: a través
                               de un modelo de programación orientado a objetos. Esto es una
diferencia importante respecto al modo de acceso a los servicios
    ofrecidos por los algunos sistemas operativos actuales, en los que a
    algunos servicios se les accede a través de llamadas a funciones
    globales definidas en DLLs y a otros a través de objetos
•   Integración de lenguajes: Desde cualquier lenguaje para el que
    exista un compilador que genere código para la plataforma .NET es
    posible utilizar código generado para la misma usando cualquier otro
    lenguaje tal y como si de código escrito usando el primero se tratase.
    Microsoft ha desarrollado un compilador de C# que genera código de
    este tipo, así como versiones de sus compiladores de Visual Basic
    (Visual Basic .NET) y C++ (C++ con extensiones gestionadas) que
    también lo generan y una versión del intérprete de JScript (JScript
    .NET) que puede interpretarlo
•   Modelo de programación sencillo: Con el CLR desaparecen muchos
    elementos complejos incluidos en los sistemas operativos actuales
    (registro de Windows, GUIDs, etc.) El CLR no es que abstraiga al
    programador de estos conceptos, sino que son conceptos que no
    existen en la plataforma .NET
•   Ejecución multiplataforma: El CLR actúa como una máquina virtual,
    encargándose de ejecutar las aplicaciones diseñadas para la plataforma
    .NET. Es decir, cualquier plataforma para la que exista una versión del
    CLR podrá ejecutar cualquier aplicación .NET. Microsoft ha desarrollado
    versiones del CLR para la mayoría de las versiones de Windows. Por
    otro lado ha firmado un acuerdo con Corel para portar el CLR a Linux y
    también hay terceros que están desarrollando de manera
    independiente versiones de libre distribución del CLR para Linux.
•   Gestión de memoria: El CLR incluye un recolector de basura que
    evita que el programador tenga que tener en cuenta cuándo ha de
    destruir los objetos que dejen de serle útiles. Este recolector es una
    aplicación que se activa cuando se quiere crear algún objeto nuevo y
    se detecta que no queda memoria libre para hacerlo, caso en que el
    recolector recorre la memoria dinámica asociada a la aplicación,
    detecta qué objetos hay en ella que no puedan ser accedidos por el
    código de la aplicación, y los elimina para limpiar la memoria de
    “objetos basura” y permitir la creación de otros nuevos.
•   Soporte multihilo: El CLR es capaz de trabajar con aplicaciones
    divididas en múltiples hilos de ejecución que pueden ir evolucionando
    por separado en paralelo o intercalándose, según el número de
    procesadores de la máquina sobre la que se ejecuten.
•   Aislamiento de procesos: El CLR asegura que desde código
    perteneciente a un determinado proceso no se pueda acceder a código
    o datos pertenecientes a otro, lo que evita errores de programación
    muy frecuentes e impide que unos procesos puedan atacar a otros.
•   Tratamiento de excepciones: En el CLR todos los errores que se
    puedan producir durante la ejecución de una aplicación se propagan de
    igual manera: mediante excepciones. Esto es muy diferente a como se
    venía haciendo en los sistemas Windows hasta la aparición de la
    plataforma .NET, donde ciertos errores se transmitían mediante
    códigos de error en formato Win32.
•   Distribución transparente: El CLR ofrece la infraestructura necesaria
                           para crear objetos remotos y acceder a ellos de manera
                           completamente transparente a su localización real, tal y como si se
                           encontrasen en la máquina que los utiliza.
                       •   Seguridad avanzada: El CLR proporciona mecanismos para restringir
                           la ejecución de ciertos códigos o los permisos asignados a los mismos
                           según su procedencia o el usuario que los ejecute. Es decir, puede no
                           darse el mismo nivel de confianza a código procedente de Internet que
                           a código instalado localmente o procedente de una red local; puede no
                           darse los mismos permisos a código procedente de un determinado
                           fabricante que a código de otro; y puede no darse los mismos permisos
                           a un mismo códigos según el usuario que lo esté ejecutando o según el
                           rol que éste desempeñe.
                       •   Seguridad de tipos: El CLR facilita la detección de errores de
                           programación difíciles de localizar comprobando que toda conversión
                           de tipos que se realice durante la ejecución de una aplicación .NET se
                           haga de modo que los tipos origen y destino sean compatibles.




Figura 2. Common Language Runtime (CLR)


2.6.    Biblioteca de clases

    La plataforma .NET nos ofrece infinidad de funcionalidades que se utilizan como punto de
partida para crear las aplicaciones. Existen funcionalidades básicas (por ejemplo todo lo
relacionado con la E/S de datos o la seguridad) y funcionalidades avanzadas en las que se
fundamentan categorías enteras de aplicaciones (acceso a datos, creación de aplicaciones
Web...). Toda esta funcionalidad está implementada en forma de bibliotecas de funciones que
físicamente se encuentran en diversas DLL. A su conjunto se le denomina Base Classes
Library(Biblioteca de clases base o BCL) y forman parte integral de la plataforma .NET, es decir,
no se trata de añadidos que se deban obtener o adquirir aparte.
La siguiente figura ilustra la arquitectura conceptual de la plataforma .NET. En ella se
pueden observar los elementos que se han mencionado en apartados anteriores (lenguajes,
CLR, CLS...) y en qué lugar de se ubican las bibliotecas de clases base:




Figura 3. Distintos elementos de la plataforma .NET y cómo se relacionan entre sí


   Todo lo que se encuentra en la BCL forma parte de la plataforma .NET. De hecho existe tal
cantidad de funcionalidad integrada dentro de estas bibliotecas que el mayor esfuerzo que todo
programador que se inicia en .NET debe hacer es el aprendizaje de las más importantes. De
todos modos Visual Studio ofrece mucha ayuda contextual (documentación, Intellisense...) y
una vez que se aprenden los rudimentos resulta fácil ir avanzando en el conocimiento de la BCL
a medida que lo vamos necesitando.

   BCL es una librería incluida en el .NET Framework formada por cientos de tipos de datos que
permiten acceder a los servicios ofrecidos por el CLR y a las funcionalidades más
frecuentemente usadas a la hora de escribir programas. Además, a partir de estas clases
prefabricadas el programador puede crear nuevas clases que mediante herencia extiendan su
funcionalidad y se integren a la perfección con el resto de clases.

   Esta librería está escrita en MSIL, por lo que puede usarse desde cualquier lenguaje cuyo
compilador genere MSIL. A través de las clases suministradas en ella es posible desarrollar
cualquier tipo de aplicación, desde las tradicionales aplicaciones de ventanas, consola o servicio
de Windows NT hasta los novedosos servicios Web y páginas ASP .NET.

   En la siguiente figura podemos ver el conjunto de clases comunes accesibles desde todos los
lenguajes que corren sobre el Framework.
Figura 4. Biblioteca de Clases Base de .NET


   La biblioteca de clases base maneja la mayoría de las operaciones básicas que se encuentran
involucradas en el desarrollo de aplicaciones, incluyendo entre otras:

                          •   Interacción con los dispositivos periféricos
                          •   Manejo de datos (ADO .NET)
                          •   Administración de memoria
                          •   Cifrado de datos
                          •   Transmisión y recepción de datos por distintos medios (XML, TCP/IP)
                          •   Manejo y administración de excepciones
                          •   Manejo del sistema de ventanas
                          •   Herramientas de despliegue de gráficos (GDI+)
                          •   Herramientas de seguridad e integración con la seguridad del sistema
                              operativo
                          •   Manejo de cadenas de caracteres y expresiones regulares
                          •   Operaciones aritméticas
                          •   Manipulación de fechas, zonas horarias y periodos de tiempo
                          •   Manejo de arreglos de datos y colecciones
                          •   Manipulación de archivos de imágenes
                          •   Generación de código
                          •   Manejo de idiomas
                          •   Interacción con el API Win32 o Windows API.
                          •   Compilación de código

   Esta funcionalidad se encuentra organizada por medio de espacios de nombres jerárquicos.

   La Biblioteca de Clases Base se clasifica, en tres grupos clave:

                          •   ASP .NET y Servicios Web XML
                          •   Windows Forms
•   ADO .NET

2.6.1.   Espacios de nombres

   Espacios de nombres: La forma de organizar la biblioteca de clases de .NET dentro del
código es a través de los espacios de nombres (namespaces), donde cada clase está organizada
en espacios de nombres según su funcionalidad. Por ejemplo, para manejar ficheros se utiliza el
espacio de nombres System.IO y si lo que se quiere es obtener información de una fuente de
datos se utilizará el espacio de nombres System.data. Todo lo que tiene que ver con el manejo
de estructuras de datos XML en la plataforma .NET se encuentra bajo el espacio de
nombres System.xml. La funcionalidad fundamental para crear aplicaciones Web está en el
espacio de nombres System.web.

   La principal ventaja de los espacios de nombres de .NET es que de esta forma se tiene toda
la biblioteca de clases de .NET centralizada bajo el mismo espacio de nombres (System). Las
clases incluidas en las bibliotecas proporcionan las funcionalidades básicas que puede necesitar
toda aplicación.

   Además, desde cualquier lenguaje se usa la misma sintaxis de invocación, ya que a todos los
lenguajes se aplica la misma biblioteca de clases.

   Dada la amplitud de la BCL, ha sido necesario organizar las clases en ella incluida en
espacios de nombres que agrupen clases con funcionalidades similares. Por ejemplo, los
espacios de nombres más usados son:


                                         Utilidad de los tipos
Espacio de nombres
                                         de datos que contiene

                                         Tipos muy frecuentemente usados, como los tipos
                                         básicos,     tablas,   excepciones,    fechas,   números
System
                                         aleatorios, recolector de basura, entrada/salida en
                                         consola, etc.

                                         Colecciones de datos de uso común como pilas, colas,
System.Collections
                                         listas, diccionarios, etc.

                                         Manipulación      de   bases   de     datos.   Forman   la
System.Data
                                         denominada arquitectura ADO .NET.

System.IO                                Manipulación de ficheros y otros flujos de datos.

System .NET                              Realización de comunicaciones en red.

                                         Acceso a los metadatos que acompañan a los módulos
System.Reflection
                                         de código.

System.Runtime.Remoting                  Acceso a objetos remotos.
Acceso a la política de seguridad en que se basa el
System.Security
                                                    CLR.

System.Threading                                    Manipulación de hilos.

                                                    Creación   de   interfaces   de   usuario   basadas   en
System.Web.UI.WebControls
                                                    ventanas para aplicaciones Web.

                                                    Creación   de   interfaces   de   usuario   basadas   en
System.Windows.Forms
                                                    ventanas para aplicaciones estándar.

System.XML                                          Acceso a datos en formato XML.
Tabla 1. Espacios de nombres de la BCL más usados


   A continuación explicaremos con más detalle algunos de ellos:

                                  •    Microsoft.CSharp,                Microsoft.JScript            y
                                       Microsoft.VisualBasic: contienen las clases necesarias para
                                       compilar y generar código mediante el lenguaje C#, JScript y
                                       Basic .NET correspondientemente.
                                  •    Microsoft.Win32: proporciona dos tipos de clases: las que
                                       controlan los eventos desencadenados por el sistema operativo
                                       y las que manipulan el Registro del sistema.
                                  •    System: contiene clases fundamentales y clases base que
                                       definen los valores y tipos de datos de referencia, eventos y
                                       controladores de eventos, interfaces, atributos y excepciones
                                       de procesamiento comúnmente utilizados. Otras clases
                                       proporcionan servicios para convertir tipos de datos, manipular
                                       parámetros de métodos, realizar cálculos matemáticos, invocar
                                       programas remotos y locales, administrar el entorno de
                                       aplicaciones y supervisar aplicaciones administradas y no
                                       administradas.
                                  •    System.Collections: Esta librería contiene interfaces y clases
                                       para el tratamiento de colecciones, las cuales representan una
                                       estructura de programación muy utilizada en las aplicaciones
                                       .NET.en ellas se definen diversas colecciones de objetos, tales
                                       como listas, colas, matrices, tablas hash y diccionarios.
                                  •    System.IO: contiene las clases para la realización de
                                       operaciones de entrada salida de datos en un programa, como
                                       puede ser la transferencia de información entre aplicaciones y
                                       un archivo de disco. Permite lectura y escritura sincrónica y
                                       asincrónica en archivos y secuencias de datos.
                                  •    System.Text: contiene clases que permiten representar
                                       codificaciones de caracteres ASCII, Unicode, UTF-7 y UTF-8;
                                       clases bases abstractas para convertir bloques de caracteres a
                                       y desde bloques de bytes; y una clase auxiliar que procesa y
                                       da formato a objetos String sin crear instancias intermedias
                                       dicha clase.
•   System.Threading: proporciona clases e interfaces que
                                 permiten la programación multiproceso. Este espacio de
                                 nombres incluye una clase ThreadPool, que administra grupos
                                 de subprocesos y una clase Mutex para sincronizar
                                 subprocesos mutuamente excluyentes. System.Threading
                                 también proporciona clases para la programación de
                                 subprocesos y la notificación de espera. Actualmente se ha
                                 introducido un nuevo espacio de nombres correspondiente a la
                                 nueva interfaz diseñada para la próxima entrega de Windows
                                 (conocida hasta ahora como Longhorn).

   Las bibliotecas antes citadas las podemos agrupar en bibliotecas de clase Base, las citadas a
continuación, se podrían definir como bibliotecas de interfaz grafica, se trata de bibliotecas que
incluyen clases específicamente desarrolladas para la creación de aplicaciones basadas en
entorno gráfico. Las dos bibliotecas más importantes que componen este grupo son:

                             •   Windows.Form: Incluye todas las clases para la creación de
                                 aplicaciones Windows en .NET. Entre otras proporciona nuevas
                                 versiones de controles Windows clásicos que se utilizaban en
                                 las antiguas aplicaciones de visual Basic, así como otros nuevos
                                 mucho más potentes y sofisticados.
                             •   ASP .NET. Esta librería se puede considerar como otro de los
                                 grandes logros de la plataforma .NET. En ella encontramos
                                 todo lo necesario para la creación de aplicaciones que se van a
                                 ejecutar en un entorno Web. Proporciona clases tanto para la
                                 construcción de objetos gráficos (controles Web) como para la
                                 implementaron de objetos de servidor (objetos ASP). Dado que
                                 este Proyecto es una aplicación Web, esta librería será objeto
                                 de un profundo estudio.

2.7.   Lenguajes de programación ( .NET)

   Actualmente es posible utilizar un gran número de lenguajes de programación para crear
aplicaciones .NET; entre ellos están Visual Basic, c#, C++, Delphi o incluso Cobol.
Figura 5. Lenguajes .NET


   La plataforma .NET incluye más de 5000 clases para ayudar a los programadores en el
desarrollo de todo tipo de programas. Estas clases se agrupan en librerías y todas ellas van
incorporadas en el entorno de ejecución de .NET.

   Estas librerías son comunes para todos los lenguajes soportados por la plataforma, es decir,
no hay una versión de la librería para c#, otra para VB .NET, etc., sino que el mismo conjunto
de clases puede ser utilizado por cualquiera de los lenguajes. Cada una de las librerías de la
plataforma se encuentra compilada en un ensamblado de tipo ddl.

2.7.1.     - C#, el lenguaje nativo de .NET Framework

   Se trata de un lenguaje nacido con la propia plataforma .NET y es conocido también como
Visual c# .NET. Como se puede deducir, de su nombre, su sintaxis es parecida al del lenguaje
C; además tiene grandes similitudes con otros lenguajes de programación orientados a objetos
como C++ y Java, lo que le permite ser el lenguaje más utilizado en la creación de aplicaciones
.NET.

   C# es un lenguaje de programación orientado a objetos desarrollado por Microsoft como
parte de su iniciativa .NET. Microsoft basó C# en C++ y Java y fue diseñado para combinar
potencia y velocidad de programación. Es el lenguaje con el que se ha desarrollado la
plataforma Microsoft .NET, y necesita esta para que los programas escritos en C# puedan
ejecutarse. Además necesita de las librerías de la plataforma y del compilador JIT para que
compile durante la ejecución del programa el código IL.

2.8.     Entorno de desarrollo

    Uno de los grandes logros de Microsoft con el lanzamiento de la plataforma NET ha sido la
creación de un único entorno de desarrollo para la construcción de las aplicaciones. Visual
Studio .NET es un entorno de desarrollo con el que podemos crear cualquier tipo de aplicación
.NET, desde programas para Windows hasta utilidades para una agenda electrónica, pasando,
por supuesto por la creación de aplicaciones de entornos Web, pudiendo además utilizar para
ello cualquiera de los lenguajes soportados por la plataforma.

   Todas las utilidades del entorno Visual Studio .NET, como son la compilación y ejecución de
programas o las herramientas de depuración, están disponibles para todos estos tipos de
aplicaciones.

   El .NET Framework constituye el núcleo fundamental de .NET al proporcionar la plataforma
para el desarrollo y ejecución de las aplicaciones.

   Se trata de una capa software que se encuentra entre la aplicación y el sistema operativo,
pudiendo llegarse a considerar una extensión de este. De hecho, aunque se distribuye de forma
independiente, las últimas versiones de los sistemas operativos Microsoft, como Windows 2003
Server, ya incorporan el .NET Framework.
Durante la ejecución de las aplicaciones el .NET Framework traduce el código intermedio en
el que ha realizado la compilación a código máquina, además de proporcionar todas las clases
necesarias para la ejecución de la aplicación.

3.     El lenguaje de programación C#

3.1.     El lenguaje C#

   Creado específicamente por Microsoft para trabajar sobre la plataforma .NET y, sin duda, el
preferido por la mayoría de los programadores para el desarrollo de todos los tipos de
aplicaciones que se van a ejecutar bajo esta plataforma.

   C# (Ceballos, 2007) es uno de los lenguajes más modernos que podemos encontrar en la
actualidad, especialmente cuando se le compara con otros de la misma familia, como C y C++,
o incluso respecto a otros de nacimiento también reciente, como Java.

    Un nuevo lenguaje de programación no se desarrolla sencillamente porque sí, existiendo
siempre razones suficientes que justifiquen la gran inversión que supone un esfuerzo de este
tipo.

   Hasta la llegada de C# no existía un lenguaje de programación verdaderamente orientado al
uso y creación de componentes, siendo quizá ésta su aportación más importante. Esta
orientación se refleja, por ejemplo, en el uso de atributos declarativos para establecer ciertas
propiedades de los objetos, sin necesidad de escribir código funcional.

    Cumple con la especificación CLS. El código que crearemos con él será traducido a
instrucciones MSIL para entonces ser traducido, justo antes de su ejecución, a instrucciones
nativas que correspondan a la plataforma concreta sobre la cual estemos trabajando.

   Se presenta como el último invento en materia de lenguajes de programación, y constituye
también la más reciente y ambiciosa apuesta en este sentido por parte de Microsoft.

    Quizás, lo primero que habría que aclarar, es que, de todo el .NET Framework, es la única
parte que puede considerarse terminada, hasta el punto de que el propio Visual Studio .NET ha
sido construido al 90% en C# y el 10% restante en C++. Por otro lado, el lenguaje merece el
calificativo de estándar, en el sentido de que al igual que algunos otros aspectos del entorno-
está siendo sometido a estandarización por parte de ECMA, la misma entidad de normalización
que llevó a cabo la estandarización de Javascript.

3.1.1.    Motivos por los cuales deberíamos optar por C#

    Este lenguaje irrumpe en el mercado como un lenguaje muy bien diseñado y con muchas
virtudes en una industria plagada de soluciones y herramientas de programación para todos los
gustos. los motivos por los cuales deberíamos optar por C# son:

                            •   C# es un lenguaje moderno y orientado a objetos, con una
                                sintaxis muy similar a la de C++ y Java. Combina la alta
                                productividad de Visual Basic con el poder y la flexibilidad de
                                C++.
•   La misma aplicación que se ejecuta bajo Windows podría
                               funcionar en un dispositivo móvil de tipo PDA. Con C#/ .NET
                               no nos atamos a ninguna plataforma en particular.
                           •   Se puede crear una gran variedad de aplicaciones en C#:
                               aplicaciones de consola, aplicaciones para Windows con
                               ventanas y controles, aplicaciones para la Web, etc.
                           •   C# gestiona automáticamente la memoria, y de este modo
                               evita los problemas de programación tan típicos en lenguajes
                               como C o C++.
                           •   Mediante la plataforma .NET desde la cual se ejecuta es posible
                               interactuar con otros componentes realizados en otros
                               lenguajes .NET de manera muy sencilla.
                           •   También es posible interactuar con componentes no
                               gestionados fuera de la plataforma .NET. Por ello, puede ser
                               integrado con facilidad en sistemas ya creados.
                           •   Desde C# podremos acceder a una librería de clases muy
                               completa y muy bien diseñada, que nos permitirá disminuir en
                               gran medida los tiempos de desarrollo.

   Una de las cosas buenas de .NET es que puedes usar hasta más de 40 lenguajes de
programación diferentes, es la llamada integración de lenguajes.

    La idea es que a la hora de compilar, primero se traduce ese lenguaje a un lenguaje
intermedio común a todos y que ya entiende .NET. Por tanto, vale con que exista un
compilador especial para cada lenguaje para que éste pueda trabajar con el poder de .NET.
Microsoft tiene creados compiladores para C++, J# y VB .NET, y obviamente C#, que es el
lenguaje con el que se ha creado toda la plataforma .NET.

   Organizado de este modo, podemos usar clases en C# que hereden de J# y ésta, a su vez
de VB .NET. Entonces, si se puede usar cualquier lenguaje... ¿Por qué utilizar C#? Muchas son
las opiniones que pueden surgir al respecto.

  Es un lenguaje nuevo y a la vez maduro. Maduro porque, toda la plataforma .NET está hecha
con C#. Fue creado por Scott Wiltamuth y Anders Hejlsberg, este último diseñador del
TurboPascal y la herramienta RAD de Delphi.

  C# es más sencillo e intuitivo, más moderno, orientado a objetos (obviamente) y sobretodo
muy eficiente.

  Desde un punto de vista práctico, C# es el lenguaje de .NET con más y mejores ejemplos.
Además, "cambiarse" a C# es fácil para todos los programadores de Java y C++, y no
demasiado difícil para los de VB.

3.2.     Comparación de C# otros lenguajes

   En este apartado se va a comparar el lenguaje C# con los más importantes que tienen cierta
similitud con él, entre los que destacamos: Visual Basic, Java y C++.

3.2.1.    Comparación C# & Visual Basic
Si un programador trabaja en Visual Basic y está evaluando “cambiar” a C#, no se puede
dudar. Existen muchísimas razones para tomar esta decisión. En primer lugar, uno de los
motivos por los cuales Visual Basic era atractivo era su productividad.

   Sí, a pesar de algunos de sus inconvenientes para crear aplicaciones sencillas, no existía
mejor solución que Visual Basic; ningún otro lenguaje podía competir en velocidad de desarrollo
con él. Pues bien, C# le ha quitado la corona; la misma aplicación que se puede realizar en
Visual Basic podrá crearla en C# en, al menos, el mismo tiempo, e incluso más rápidamente.

  Por otro lado, gracias a las nuevas características del lenguaje, el diseño de sus aplicaciones
podrá ser más elegante y simple, y de este modo podrá manejar la complejidad de una manera
más natural.

   En segundo lugar, los programadores Visual Basic nunca fueron vistos como programadores
reales, aunque muchísimos profesionales sufran de esta etiqueta de manera injusta.

   Por último, el paso de Visual Basic 6.0 a C# hasta podría ser considerado lógico para quien
sea un dominador del VB.

3.2.2.   Comparación C# & C++

   Los detractores de C++ lo acusan de ser un lenguaje híbrido, un C con clases, como muchas
veces es definido. El problema de esta falta de decisión en cuanto al diseño del lenguaje es que
permite que convivan clases con funciones y variables globales, lo cual podría ser tentador para
el programador y podría empobrecer el diseño de una aplicación construida de este modo.

   Claro que, por otro lado, hay quienes les gusta ver el vaso medio lleno y sostienen que esta
característica de “hibridez” es positiva, pues deja al programador la posibilidad de tomar lo
mejor de los dos mundos.

   C# es, en alguna medida, una evolución de C++, ya que toma prestada su sintaxis y mejora
muchos de sus aspectos, como el hecho de poseer una librería de clases unificada y ser un
lenguaje orientado a objetos puro. Esto no quiere decir que lo reemplace en todos sus usos,
claro.

   C++ seguirá teniendo su segmento de utilización en donde es ideal, pero C# invade día tras
día áreas donde antes C++ era único conquistador.

3.2.3.   Comparación C# & Java

   Muchos sostienen que C# es una copia de Java. Si tomamos ciertos trozos de código escritos
en alguno de estos lenguajes, podría ser imposible determinar si es C# o es Java.

   Lo cierto es que parte de la filosofía empleada por ambos lenguajes es la misma. Ambos se
ejecutan sobre una máquina virtual, y esta característica los convierte en lenguajes
potencialmente multiplataforma, ambos poseen especificaciones de subconjuntos de recursos
de lenguaje para implementaciones en diversos dispositivos (por ejemplo, móviles), y ambos
tienen una librería de clases con muchas características en común. Sin embargo, C# presenta la
ventaja de integrarse mejor con aplicaciones nativas de la plataforma sobre la cual estemos
trabajando.

   Claro que, si accedemos a recursos nativos, perderá la característica de ser multiplataforma,
pero esta característica no siempre es deseada.

   Es indudable que Java cuenta con mayor madurez, con más programadores, con el respaldo
de muchas casas de software, entre otras cosas que pueden considerarse ventajosas; pero no
es menos cierto que .NET ha sido desarrollado por algunas de las personas que más conocen
de Java, que cuenta con el respaldo de una inmensa casa de software, y con el apoyo de
muchas personas en el mundo, además de tener una gran aceptación comercial.

3.3.   Características fundamentales del lenguaje

   C# es un lenguaje moderno y altamente expresivo que se ajusta al paradigma de
programación orientada a objetos. Su sintaxis es similar a C++ y Java. El lenguaje fue
desarrollado en gran parte por Anders Hejlsberg.

   En C# no existe el concepto de función global o variable fuera de una clase u objeto. Por su
buen apego a la POO, es posible sobrecargar métodos y operadores. Soporta definición de
interfaces. Ninguna clase puede poseer más de un padre (no se permite la herencia múltiple),
pero sí puede suscribir un contrato con diversas interfaces.

   Soporta la definición de estructuras, pero, a diferencia de C++, aquí no son tan parecidas a
las clases y poseen ciertas restricciones. Permite además la declaración de propiedades,
eventos y atributos (que son construcciones declarativas).

   Una característica distintiva cada vez más presente en lenguajes modernos es la gestión
automática de memoria y el uso de referencias en lugar de punteros.

    Gracias a esta gestión automática de memoria ya no tendremos que preocuparnos por la
existencia de memory leaks (zonas de memoria que permanecen reservadas pero ya no son
utilizadas debido a errores de programación).

   Una de las características principales de C# es que se trata de un lenguaje que compila (por
defecto) a un formato intermedio, al estilo de Java, que posteriormente, debe de ser
interpretado por un entorno de ejecución, una máquina JIT (just-in-time), también al estilo de
Java.

   La gran diferencia respecto a Java es que, ése intérprete será común a todos los lenguaje
soportados por el entorno de ejecución y mediante este mecanismo permitirá que los
componentes realizados en cualquier lenguaje puedan comunicarse entre sí.

   Se trata pues, de una extensión del concepto inicial que dio origen a Java: en lugar de un
único lenguaje para muchas plataformas, se pretende un entorno común multiplataforma, que
soporte muchos lenguajes, basándose en que todos ellos compilen a un mismo código
intermedio. Para hacer viable esta idea, se ha optimizado considerablemente la velocidad,
respecto a Java y ya se están anunciando los primeros .NET Framework para otras plataformas.
Dispone de todas las características propias de cualquier lenguaje orientado a
objetos: encapsulación, herencia y polimorfismo.

                 •   Ofrece un modelo de programación orientada a objetos homogéneo, en
                     el que todo el código se escribe dentro de clases y todos los tipos de
                     datos,     incluso    los    básicos,    son  clases    que    heredan
                     de System.Object (por lo que los métodos definidos en ésta son
                     comunes a todos los tipos del lenguaje)
                 •   Permite la definición del significado de los operadores básicos del
                     lenguaje (+, -, *, &, ==, etc.) para nuestros propios tipos de datos, lo
                     que facilita enormemente tanto la legibilidad de las aplicaciones como
                     el esfuerzo necesario para escribirlas.
                 •   Permite definir estructuras, que son clases un tanto especiales: sus
                     objetos se almacenan en pila, por lo que se trabaja con ellos
                     directamente y no referencias al montículo, lo que permite accederlos
                     más rápido. Sin embargo, esta mayor eficiencia en sus accesos tiene
                     también sus inconvenientes, fundamentalmente que el tiempo
                     necesario para pasarlas como parámetros a métodos es mayor.
                 •   Es un lenguaje fuertemente tipado, lo que significa se controla que
                     todas las conversiones entre tipos se realicen de forma compatible, lo
                     que asegura que nunca se acceda fuera del espacio de memoria
                     ocupado por un objeto. Así se evitan frecuentes errores de
                     programación y se consigue que los programas no puedan poner en
                     peligro la integridad de otras aplicaciones.
                 •   Incorpora propiedades, que son un mecanismo que permite el acceso
                     controlado a miembros de una clase tal y como si de campos públicos
                     se tratasen. Gracias a ellas se evita la pérdida de legibilidad que en
                     otros lenguajes causa la utilización de métodos Set() y Get() pero se
                     mantienen todas las ventajas de un acceso controlado por estos
                     proporcionada.
                 •   Admite unos elementos llamados atributos que no son miembros de las
                     clases sino información sobre éstas que podemos incluir en su
                     declaración. Por ejemplo, indican si un miembro de una clase ha de
                     aparecer en la ventana de propiedades de Visual Studio .NET, cuáles
                     son los valores admitidos para cada miembro en ésta, etc.
                 •   Incluye soporte nativo para eventos y delegados. Los delegados son
                     similares a los punteros a funciones de otros lenguajes como C++
                     aunque más cercanos a la orientación a objetos, y los eventos son
                     mecanismos mediante los cuales los objetos pueden notificar de la
                     ocurrencia de sucesos. Los eventos suelen usarse en combinación con
                     los delegados para el diseño de interfaces gráficas de usuario, con lo
                     que se proporciona al programador un mecanismo cómodo para
                     escribir códigos de respuesta a los diferentes eventos que puedan
                     surgir a lo largo de la ejecución de la aplicación. (pulsación de un
                     botón, modificación de un texto, etc.)
                 •   Tiene a su disposición un recolector de basura que libera al
                     programador de la tarea de tener que eliminar las referencias a objetos
                     que dejen de ser útiles, encargándose de ello éste y evitándose así que
                     se agote la memoria porque al programador olvide liberar objetos
inútiles o que se produzcan errores porque el programador libere áreas
                         de memoria ya liberadas y reasignadas.

3.4.     ¿Por qué C#?

   La plataforma .NET acepta varios lenguajes. Por ahora, C#, Visual Basic, C++ gestionado,
Nemerle, FORTRAN, Java, Python, etc. y con capacidad para aceptar prácticamente cualquier
lenguaje. Entonces la pregunta es, ¿porqué se eligió C# en lugar de cualquier otro lenguaje?

   La razón fundamental es que C# se diseñó para la plataforma .NET y es capaz de utilizar
todo su potencial. También es cierto que es un lenguaje "limpio" en el sentido de que al no
tener que proporcionar compatibilidad hacia atrás se ha tenido más libertad en el diseño y se
ha puesto especial hincapié en la simplicidad. Por ejemplo, en C# hay un tipo de clase y
siempre se le aplica el recolector de basura mientras que en C++ gestionado hay dos tipos de
clases, una a la que se aplica el recolector y otra a la que no.

4.     Tecnología ASP .NET Y AJAX

4.1.     ASP .NET

4.1.1.    Introducción

    La transformación que ha sufrido la Web en los últimos años ha sido espectacular. Al
principio se usaba principalmente como escaparate publicitario, con información estática, y
podemos observar que hoy día se ha convertido en un medio sobre el que poder realizar
operaciones comerciales, transacciones de datos entre aplicaciones remotas etc.

   Para hacer esto posible, las tecnologías de desarrollo han tenido que evolucionar y adaptarse
a los nuevos requerimientos que exigen este tipo de aplicaciones.

  Este es el caso de ASP .NET (Martín Sierra, 2007) que a día de hoy desde su aparición en el
año 2001 se ha convertido en una de las tecnologías más potentes y completas para el
desarrollo de aplicaciones en la Web.

   Hoy en día, resulta bastante común implementar la interfaz de una aplicación utilizando
páginas Web en vez de las ventanas y los controles específicos de un sistema operativo
concreto. En lugar de escribir una aplicación para un sistema operativo concreto, como puede
ser Windows, en muchas situaciones es preferible crear aplicaciones Web a las que se accede a
través de Internet.

    Se denominan aplicaciones Web a aquellas aplicaciones cuya interfaz se construye a partir de
páginas Web. Las páginas Web no son más que ficheros de texto en un formato estándar
denominado HTML. Estos ficheros se almacenan en un servidor Web al cual se accede
utilizando el protocolo http.

  Para utilizar una aplicación Web desde una máquina concreta, basta con tener instalado un
navegador Web en esa máquina, ya sea éste el Internet Explorer de Microsoft, el Netscape
Navigator o cualquier otro navegador. Desde la máquina cliente, donde se ejecuta el
navegador, se accede a través de la red al servidor Web donde está alojada la aplicación y, de
esa forma, se puede utilizar la aplicación sin que el usuario tenga que instalarla previamente en
su máquina.

4.1.2.   ¿Qué es ASP .NET?

   Durante muchos años, los desarrolladores han estado utilizando la tecnología ASP para
generar páginas Web dinámicas. De modo similar a ASP, ASP .NET se ejecuta en el servidor
Web y proporciona una forma de desarrollar sitios Web dinámicos, personalizados y de rico
contenido.

    ASP .NET es la nueva tecnología propuesta por Microsoft para enfrentar los desafíos de
interconexión entre dispositivos y sitios Web del nuevo milenio. En versiones anteriores de
Visual Basic, las opciones brindadas para la programación de estos últimos, no contaba con las
ventajas que ofrecían otras herramientas, como visual InterDev. En esta versión, ahora se
cuenta con un excelente editor de páginas para servidor activo ASP .NET y HTML, el cual viene
incluido por el entorno de desarrollo como diseñador natural. Adicionalmente se han agregado
varias características, a los efectos de que la programación de una aplicación para la Web
cuente con todas las funcionalidades del lenguaje, y además se efectúe en forma similar a
como se hacía bajo el modelo Windows.

   Las técnicas brindadas para dibujar un formulario de Windows no difieren en mucho de las
ofrecidas para realizar la misma tarea en una página Web. Ahora se cuenta con un nuevo tipo
de proyecto llamado aplicación Web ASP .NET, el cual hace uso de formularios Web o Web
Forms, los cuales cumplen un rol similar al de los formularios estándares en el modelo
Windows.

   Básicamente un formulario Web es exhibido de igual forma que uno Windows, pero, en
realidad, el primero es gestionado internamente como una página de servidor activo y etiquetas
HTML. La creación de la interfaz es muy sencilla, ya que basta con crear un nuevo proyecto de
este tipo, y posteriormente arrastrar los controles del cuadro de herramientas, para así crear
una nueva interfaz gráfica para la Web.

   Es una de las piezas esenciales de Microsoft .NET Framework y proporciona la infraestructura
para aplicaciones .NET Web dinámicas fácilmente desarrolladas. No es sólo el sucesor de
páginas Active Server (ASP) de Microsoft, es una plataforma unificada de desarrollo Web que
proporciona a los desarrolladores los servicios necesarios para generar aplicaciones Web de
empresa. Incluye grandes mejoras con respecto a ASP e incluye muchas características nuevas.

4.1.3.   Ventajas ASP .NET

  ASP .NET ofrece varias ventajas importantes entre las que destacamos:

                            •   Compatibilidad con herramientas de primer nivel: La
                                edición de los controles de servidor de arrastrar y colocar y la
                                implementación automática son sólo algunas de las
                                características que proporciona esta eficaz herramienta.
                                    o El marco de trabajo de ASP .NET se complementa con
                                        un diseñador y una caja de herramientas muy
completos en el entorno integrado de programación
                                     IDE de Visual Studio.
                        •   Mejor rendimiento: ASP .NET es un código de Common
                            Language Runtime compilado que se ejecuta en el servidor. A
                            diferencia de sus predecesores, ASP .NET puede aprovechar las
                            ventajas del enlace anticipado, la optimización nativa y los
                            servicios de caché desde el primer momento. Esto supone un
                            incremento espectacular del rendimiento antes de siquiera
                            escribir una línea de código.
                        •   Eficacia y flexibilidad: La eficacia y la flexibilidad de toda esa
                            plataforma se encuentra disponible para los programadores de
                            aplicaciones Web. La biblioteca de clases de .NET Framework,
                            la Mensajería y las soluciones de Acceso a datos se encuentran
                            accesibles desde el Web de manera uniforme. ASP .NET es
                            también independiente del lenguaje, por lo que puede elegir el
                            lenguaje que mejor se adapte a la aplicación o dividir la
                            aplicación en varios lenguajes.
                        •   Simplicidad: ASP .NET facilita la realización de tareas
                            comunes, desde el sencillo envío de formularios y la
                            autenticación del cliente hasta la implementación y la
                            configuración de sitios.
                        •   Facilidad de uso: ASP .NET emplea un sistema de
                            configuración jerárquico, basado en texto, que simplifica la
                            aplicación de la configuración al entorno de servidor y las
                            aplicaciones Web. Debido a que la información de
                            configuración se almacena como texto sin formato, se puede
                            aplicar la nueva configuración sin la ayuda de herramientas de
                            administración local
                        •   Escalabilidad y disponibilidad: ASP .NET se ha diseñado
                            teniendo en cuenta la escalabilidad, con características
                            diseñadas específicamente a medida, con el fin de mejorar el
                            rendimiento en entornos agrupados y de múltiples
                            procesadores. Además, el motor de tiempo de ejecución de
                            ASP .NET controla y administra los procesos de cerca, por lo
                            que si uno no se comporta adecuadamente, se puede crear un
                            proceso nuevo en su lugar, lo que ayuda a mantener la
                            aplicación disponible constantemente para controlar solicitudes.
                        •   Posibilidad de personalización y extensibilidad: ASP .NET
                            presenta una arquitectura bien diseñada que permite a los
                            programadores insertar su código en el nivel adecuado. De
                            hecho, es posible extender o reemplazar cualquier
                            subcomponente del motor de tiempo de ejecución de ASP .NET
                            con su propio componente escrito personalizado.
                        •   Seguridad: Con la autenticación de Windows integrada y la
                            configuración por aplicación, se puede tener la completa
                            seguridad de que las aplicaciones están a salvo.

4.1.4.   Funciones más importantes de ASP .NET
En el proyecto se han usado algunas de estas funciones o variables usando el espacio
de nombres System.Web para poder disponer de una variedad de clases que darán
funcionalidad a nuestras aplicaciones Web.

                            •   HttpResponse: Cuando se necesita mandar información al
                                cliente como cookies, salida HTML y direcciones se utiliza la
                                clase    HttpResponse mediante       el   objetoResponse y  el
                                método Write.
                            •   HttpRequest: Cuando se solicita información del explorador
                                de una computadora cliente, tal como cookies, valores de las
                                formas o una consulta se utiliza la claseHttpRequest mediante
                                el objeto Request. Cabe mencionar que en ASP .NET muchas
                                de las funciones de solicitud se hacen en forma automática,
                                por esto se puede prescindir de éste para obtener valores,
                                aunque sí se utiliza para algunas otras funciones.
                            •   IsClientConnected() As Bolean: Debido a que los procesos
                                se realizan en el servidor, éstos pueden tomar tiempo y es
                                necesario saber si el usuario sigue conectado, la
                                función IsClienteConnected regresa un valor verdadero o falso
                                que indica el resultado, se utiliza en conjunción con el
                                objeto Response.
                            •   Objeto.Redirect(“http://ProyectoFinDeCarrara.aspx”):
                                El objeto Response tiene un método llamado Redirect el cual
                                dirige la página actual hacia otra; sin embargo, hay que tomar
                                en cuenta que cuando el navegador de Internet encuentra una
                                página que dirige hacia otra, el servidor envía la orden: “se
                                debe de ir a otra página”, después de esto el explorador toma
                                la dirección destino y va hacia esa página, por lo tanto este
                                método ocasiona una ida y vuelta extra al servidor.

Variables del servidor

   El servidor cuenta con variables especiales que pueden ser consultadas por el usuario, estas
variables pueden regresarnos información como por ejemplo la versión de navegador de
Internet del que se está haciendo la petición, la versión del servidor Web, etc.

  La propiedad ServerVariables se utiliza para esta operación.

  Por ejemplo, para obtener el navegador utilizado:

  Request.ServerVariables(“HTTP_USER_AGENT”)

  Para obtener la versión de servidor

  Request.ServerVariables(“SERVER_SOFTWARE”)

   Si queremos saber todas las variables de la propiedad ServerVariables, asignamos a una
variable la siguiente instrucción: Variable=Request.ServerVariables(0)
Variables de aplicación: Cada vez que una página es solicitada se regenera completamente.
Es por eso que no guarda valores, y se utilizan las variables de aplicación, en las que no se
permiten almacenar valores que puedan ser compartidos por todos los usuarios que acceden a
la aplicación.

  El objeto application permite que se almacene información dentro de la memoria del servidor
Web, mientras que el servicio de IIS no sea detenido.

    Variables de sesión: Cuando se necesita guardar información por usuario, entonces se
utilizan las variables de sesión. La diferencia de este tipo de variables contra las de aplicación es
que las variables de sesión tienen un conjunto de valores por usuario y las de aplicación son
globales, las comparten todos los usuarios que acceden a la aplicación.

   El valor de estas variables son mantenidas mientras la sesión no termine, ya sea que el
tiempo máximo de espera se alcance o el usuario cambie a otra página que no pertenezca a la
misma aplicación.

   Es importante establecer lo que es una sesión para ASP .NET, cada ventana del navegador
de Internet abierta es interpretada como una sesión. Por ejemplo, si tenemos tres ventanas del
navegador abiertas en la misma computadora, será interpretada por ASP .NET como tres
sesiones abiertas, sin embargo generalmente existe una sola ventana abierta del navegador de
Internet por usuario.

Lock y unlock

  Los miembros Lock y Unlock se utilizan para que no existan problemas de concurrencia, ya
que se debe alterar una variable por sesión a la vez.

Inicializar con global.asax

    Es posible inicializar variables de aplicación o de sesión en el archivo global.asax, si se
necesita guardar información se utilizan variables de aplicación o de sesión. En ASP .NET
existen varios eventos en la vida de la aplicación, algunos de éstos son:

                             •   Eventos de aplicación: Los eventos de aplicación son
                                 aquellos que son compartidos por todos los usuarios:
                             •   Application_Start: Se ocasiona cuando el primer usuario trata
                                 por primera vez de ingresar a la aplicación:
                             •   Application_BeginRequest: Cuando un usuario solicita un
                                 URL:
                             •   Application_EndRequest: Cuando la solicitud ha sido
                                 completada:
                             •   Application_End: Se activa cuando ya no hay instancias de la
                                 clase Global:
                             •   Eventos de sesión: Los eventos de sesión son aquellos que
                                 son exclusivos a un usuario:
                             •   Session_Start: Es activado cuando una nueva sesión se va a
                                 generar:
                             •   Session_End: Se activa cuando termina una sesión.
4.1.5.   Formularios Web de ASP .NET

   Son el marco de trabajo de la página de formularios Web de ASP .NET es un modelo de
programación escalable que puede utilizarse en el servidor para generar páginas web
dinámicamente.

    Concebido como una evolución lógica de ASP, ASP .NET proporciona compatibilidad
sintáctica con las páginas existentes, el marco de trabajo de formularios web ASP .NET se ha
diseñado específicamente para tratar varias deficiencias clave del modelo anterior. En
particular, proporciona:

                            •   Capacidad para que los programadores puedan estructurar
                                limpiamente la lógica de la página de forma ordenada (no
                                revuelta).
                            •   Capacidad para que las herramientas de desarrollo
                                proporcionen un fuerte soporte de diseño. El código ASP
                                existente es opaco para las herramientas.
                            •   Capacidad para crear y utilizar controles de la interfaz de
                                usuario reutilizables que puedan encapsular funcionalidades
                                comunes y, así, reducir la cantidad de código que tiene que
                                escribir el programador de una página.

    Desarrollar aplicaciones web ASP .NET sobre el .NET Framework es similar a desarrollar
aplicaciones Windows. El componente fundamental de ASP .NET es el formulario web form. Un
formulario web form es la página web que los usuarios visualizan en un navegador. Una
aplicación web ASP .NET consta de uno o más formularios web form. Un web form es una
página dinámica que puede acceder a recursos del servidor.

    Por ejemplo, una página web tradicional puede ejecutar scripts en el cliente para realizar
tareas básicas. En cambio, un formulario web form ASP .NET también puede ejecutar código en
el lado servidor para acceder a una base de datos, generar formularios web forms adicionales,
o aprovechar la seguridad incorporada en el servidor.

   Además, como un formulario web form ASP .NET no depende de utilizar scripts en el cliente,
no depende del tipo de navegador del cliente o del sistema operativo. Esta independencia
permite desarrollar un único formulario Web Form que puede ser visualizado prácticamente en
todos los dispositivos que dispongan de acceso a Internet y de un navegador Web.

  Debido a que ASP .NET forma parte del .NET Framework, podemos desarrollar aplicaciones
web ASP .NET en cualquier lenguaje basado en .NET.

    Las páginas de formularios Web de ASP .NET consisten en archivos de texto con una
extensión de nombre de archivo.aspx. Pueden implementarse por todo un árbol de directorio
raíz virtual IIS.

    Cuando un explorador cliente solicita recursos.aspx, el motor en tiempo de ejecución de ASP
.NET analiza y compila el archivo de destino en una clase de .NET Framework. Esta clase puede
utilizarse, a continuación, para procesar de forma dinámica las solicitudes entrantes.
4.1.6.      Arquitectura ASP .NET

   Es una implementación completamente nueva de ASP, escrita de cero en C#. Utiliza
lenguajes de programación compilados como Visual Basic .NET, C#, incluso COBOL, para
escribir aplicaciones Web. Las aplicaciones son compiladas en el servidor, y las páginas son
generadas en HTML específicamente para el browser que hizo la invocación.

   Se integra en la autenticación del sistema operativo Windows y permite una configuración a
nivel de aplicación.




Figura 6. Arquitectura ASP .NET


   Los conceptos centrales de ASP .NET son: Separar presentación de lógica del negocio,
Usar servicios provistos por el .NET Framework, El código es compilado la primera vez que se
accede a una página, Administración de estado, Utilización de cualquier lenguaje, Actualizar
archivos mientras se está ejecutando la aplicación La ejecución utiliza el soporte del CLR. El
Código en Segundo plano se compila al código intermedio de MS (MS-IL). ASP .NET utiliza las
ventajas de la plataforma multilenguaje, con la Biblioteca de clases común (BCL) y el sistema
de tipos comunes (CTS).

4.1.7.      Partes de una aplicación Web ASP .NET

   Las partes de una aplicación Web ASP .NET incluyen:

                                  •   Formularios web forms o páginas.aspx: Los formularios
                                      web forms y las páginas.aspx proporcionan la interfaz de
                                      usuario para la aplicación web.
                                  •   Páginas con código trasero: Las páginas con código trasero
                                      están asociadas a los formularios web forms y contienen el
                                      código del servidor para el formulario web form.
                                  •   Archivos de configuración: Los archivos de configuración
                                      son archivos XML que definen la configuración predeterminada
                                      para la aplicación Web y para el servidor web. Cada aplicación
                                      web tiene un archivo de configuración web.config. Además,
                                      cada servidor web tiene un archivo machine.config.
•   Archivo Global.asax: Los archivos global.asax contienen el
                                código necesario para responder a los eventos a nivel de
                                aplicación provocados por ASP .NET.
                            •   Enlaces a servicios web XML: Los enlaces a servicios web
                                XML permiten a la aplicación Web enviar y recibir datos de un
                                servicio web XML.
                            •   Conectividad a bases de datos: La conectividad a bases de
                                datos permite a la aplicación Web transferir datos desde y
                                hacia fuentes de base de datos.
                            •   Caché: El uso de caché permite a la aplicación web devolver
                                más rápidamente formularios Web forms y datos tras la
                                primera petición.

4.1.8.    ¿Qué puedo hacer con ASP .NET?

    ASP .NET es la tecnología que permite hacer formularios web y servicios web en la
plataforma NET, incorporado en el Framework. A través de ASP .NET se puede construir
soluciones desde Visual Studio NET, desde el desarrollo de páginas y formularios web hasta
servicios web.

   El formulario Web es una página dinámica que puede acceder a los recursos del servidor o a
recursos de otros servidores, por ejemplo, una página ASP .NET puede ejecutar código para
acceder a sql Server y luego armar una respuesta al usuario como código html Una de las
principales ventajas de ASP .NET es que como el código se ejecuta del lado del servidor, la
respuesta puede adaptarse al explorador de internet del usuario.

   Los servicios web son componentes que pueden ser accedidos desde la Intranet o desde
Internet, y permiten crear aplicaciones distribuidas, es decir, aplicaciones centralizadas en un
objetivo específico, pero que requieren de servicios externos a la aplicación para
complementarse.

   ASP NET es uno de estándares, el desarrollo de soluciones web usado por muchos
desarrolladores en todo el mundo.

4.2.     Ajax

   Para la implementación de este proyecto se ha usado esta técnica de desarrollo Web, usando
algunos de los controles que nos ofrece Ajax control Toolkit.

4.2.1.    Introducción Ajax

   En 2005 Microsoft presenta Ajax 1.0 (Asynchronous JavaScript And XML), una técnica de
desarrollo Web para crear aplicaciones interactivas que hacen que la experiencia del usuario
cada vez sea mejor. Cabe mencionar que Ajax es una técnica que viene desarrollándose por
varias empresas. Junto a esta tecnología también anunció Ajax control ToolKit una suite de
variados controles que implementan toda la funcionalidad de Ajax.

  Puntualizando diremos que Ajax no es un leguaje de programación, no es un Entorno de
Desarrollo, no es una tecnología y no es un script. Ajax es una técnica de programación que
implementa un conjunto de tecnologías que hacen que una página funcione de manera
interactiva, esto es que no veamos el fastidioso parpadeo a la hora de cargar otra página o
podamos ver algunos efectos de desplazamiento que antes sólo lograba flash.

   En realidad Ajax no es una tecnología, sino la unión de varias tecnologías que juntas pueden
lograr cosas realmente impresionantes como GoogleMaps, Gmail el outlook web access o
algunas otras aplicaciones muy conocidas: Ajax, en resumen, es el acrónimo para Asynchronous
JavaScript + XML y el concepto es: cargar y renderizar una página, luego mantenerse en esa
página mientras scripts y rutinas van al servidor buscando, en background, los datos que son
usados para actualizar la página sólo renderizando la página y mostrando u ocultando porciones
de la misma.

   Podemos concretar que es una técnica de desarrollo web para crear aplicaciones interactivas.
Éstas se ejecutan en el cliente, es decir, en el navegador del usuario, y mantiene comunicación
asíncrona con el servidor en segundo plano. De esta forma es posible realizar cambios sobre la
misma página sin necesidad de recargarla. Esto significa aumentar la interactividad, velocidad y
usabilidad en la misma.

4.2.2.   Historia de Ajax

    A pesar de que el término "Ajax" fuese creado en 2005, la historia de las tecnologías que
permiten Ajax se remonta a una década antes con la iniciativa de Microsoft en el desarrollo de
scripting remoto. Sin embargo, las técnicas para la carga asíncrona de contenidos en una
página existente sin requerir recarga completa remontan al tiempo del elemento iframe
(introducido en Internet Explorer 3 en 1996) y el tipo de elemento layer (introducido en
Netscape 4 en 1997, abandonado durante las primeras etapas de desarrollo de Mozilla).

   Ambos tipos de elemento tenían el atributo src que podía tomar cualquier dirección URL
externa, y cargando una página que contenga javascript que manipule la página paterna,
pueden lograrse efectos parecidos al Ajax.

    Microsoft's Remote Scripting (o MSRS, introducido en 1998) resultó un sustituto más
elegante para estas técnicas, con envío de datos a través de un applet Java el cual se puede
comunicar con el cliente usando JavaScript. Esta técnica funcionó en ambos navegadores,
Internet Explorer versión 4 y Netscape Navigator versión 4.

   La comunidad de desarrolladores Web, primero colaborando por medio del grupo de noticias
microsoft.public.scripting.remote y después usando blogs, desarrollaron una gama de técnicas
de scripting remoto para conseguir los mismos resultados en diferentes navegadores. Los
primeros ejemplos incluyen la librería JSRS en el año 2000, la introducción a la técnica
imagen/cookie en el mismo año y la técnica JavaScript bajo demanda (JavaScript on Demand)
en 2002. En ese año, se realizó una modificación por parte de la comunidad de usuarios al
Microsoft's Remote Scripting para reemplazar el applet Java por XMLHttpRequest.

4.2.3.   Tecnologías que conforman Ajax

  Las tecnologías que conforman Ajax son las siguientes:
•    XHTML (o HTML) y hojas de estilos en cascada (CSS). Estas dos
                              tecnologías trabajan en la presentación de la página.
                         •    Document Object Model (DOM). Nos permite interactuar con la
                              información presentada por medio de un Script.
                         •    El     objeto       XMLHttpRequest para          intercambiar  datos
                              asincrónicamente con el servidor Web. Esto es mandar información por
                              atrás sin que el usuario se percate de esto.
                         •    XML es el formato usado comúnmente para la transferencia de vuelta
                              al servidor, aunque cualquier formato puede funcionar, incluyendo
                              HTML preformateado, texto plano, JSON y hasta EBML.




Figura 7. Tecnologías agrupadas bajo el concepto de AJAX


   Desarrollar aplicaciones Ajax requiere un conocimiento avanzado de todas y cada una de las
tecnologías anteriores.

   En las aplicaciones web tradicionales, las acciones del usuario en la página (pinchar en un
botón, seleccionar un valor de una lista, etc.) desencadenan llamadas al servidor. Una vez
procesada la petición del usuario, el servidor devuelve una nueva página html al navegador del
usuario.

4.2.4.      A favor y en contra de AJAX

   A continuación vamos a exponer los aspectos más positivos y negativos de usar esta
tecnología en nuestras aplicaciones, describiendo brevemente cada una de ellas.

4.2.4.1.      A favor de AJAX

                                   •    Facilidad de manejo del usuario: El usuario tiene un mayor
                                        conocimiento de las aplicaciones de escritorio. Se reduce el
                                        tamaño de la información intercambiada
                                   •    Mayor interactividad: Recuperación asíncrona de datos,
                                        reduciendo el tiempo de espera del usuario. Responden más
                                        rápidamente a las interacciones del usuario, ya que sólo
                                        requiere enviar pequeñas peticiones al servidor, y se devuelven
                                        respuestas relativamente cortas ya que no requieren la recarga
                                        de toda la página
•   Portabilidad entre plataformas: No requieren instalación de
                            plugins, applets de Java, ni ningún otro elemento. Las
                            aplicaciones de Ajax utilizan características bien documentadas
                            y compatibles con la mayoría de los navegadores
                            actuales. Aunque esta situación podría cambiar en el futuro, en
                            este momento, los usos de Ajax son efectivos entre
                            plataformas. Mientras que la plataforma de Ajax está más
                            restringida que la plataforma de Java, las aplicaciones actuales
                            de Ajax llenan con eficacia la parte de los Java applets.
                        •   Interactividad: Las aplicaciones Ajax se ejecutan en la
                            máquina cliente, manipulando la página actual dentro de sus
                            navegadores usando métodos de document object model.
                            Puede ser usado para multitud de tareas como actualizar o
                            eliminar registros, expandir formularios Web, devolver
                            peticiones simples de búsqueda, o editar árboles de categorías;
                            todo sin tener la necesidad de tener que recargar toda la
                            página de html cada vez que se realiza un cambio.
                            Generalmente sólo requiere enviar pequeñas peticiones al
                            servidor, y se devuelven respuestas relativamente cortas.

4.2.4.2.   En contra de AJAX

                        •   Críticas de usabilidad: Una de las mayores críticas contra el
                            uso de Ajax en aplicaciones web es que puede fácilmente
                            acabar con el comportamiento normal del botón atrás del
                            navegador. Las diversas expectativas entre volver a una página
                            que se ha modificado dinámicamente y la vuelta a una página
                            estática pueden ser sutiles. Los usuarios normalmente esperan
                            que haciendo click en atrás mientras están en una aplicación
                            Web les llevará a la última página cargada, y en aplicaciones
                            Ajax lo más seguro es que esto no ocurra. Los desarrolladores
                            han implementado varias soluciones a este problema, muchos
                            de los cuales giraron alrededor de crear o usar iframe invisibles
                            para invocar los cambios que hacen que se genere el historial
                            usado por el botón atrás del navegador. Google maps, por
                            ejemplo, realiza búsquedas en un IFrame invisible y luego
                            inserta los resultados en la página web visible.
                                 o Un problema relacionado es que las actualizaciones
                                     dinámicas hacen difícil al usuario agregar a los
                                     marcadores/favoritos un momento particular de la
                                     aplicación. Existen soluciones a este problema, muchas
                                     de las cuales utilizan el fragmento identificador del URL
                                     (la parte de una URL precedida del signo '#' para no
                                     perderla de vista, y permitir a los usuarios volver a ese
                                     momento exacto.
                        •   Tiempos de respuesta: El intervalo entre la petición del
                            usuario y la respuesta del servidor debe tenerse en cuenta
                            durante el desarrollo de ajax. Sin el feedback claro al usuario,
                            carga de datos rápida, y dirección apropiada del objeto
XMLHttpRequest los usuarios pueden experimentar esperas en
                                la intefaz de la aplicación Web, algo que los usuarios pueden
                                no esperar o comprender. Como soluciones a estas esperas,
                                frecuentemente se recomienda el uso de feedback visual para
                                informar al usuario de la actividad en segundo plano y/o
                                precarga de contenido y datos.
                            •   JavaScript: Aunque Ajax no necesita ningún tipo de plug-in
                                para el navegador, requiere que los usuarios tengan el
                                JavaScript activado. Esto se aplica a todos los navegadores que
                                soportan esta tecnología excepto para Microsoft Internet
                                Explorer 6 y anteriores los cuales necesitan también tener el
                                ActiveX activado, ya que el objeto XMLHttpRequest está
                                implementado junto con el ActiveX en este navegador. Internet
                                Explorer 7, por otra parte, va a implementar esta interfaz como
                                un objeto JavaScript nativo y por tanto no se va a necesitar
                                ActiveX para que AJAX pueda funcionar con normalidad.
                                     o Como ocurre con las aplicaciones dhtml, las de Ajax
                                         deben de ser probadas rigurosamente para adaptarse
                                         a los diferentes navegadores y plataformas. Han ido
                                         apareciendo numerosas librerías de programación a
                                         medida que Ajax ha ido madurando que pueden
                                         ayudar en esta tarea.
                            •   Nombre: Ha habido varias críticas en torno al término Ajax,
                                reclamando que adaptive path (el consultorio que creó la
                                palabra) u otros defensores lo usan como un vehículo de
                                marketing para técnicas antes usadas.
                            •   Usabilidad: Comportamiento         del    usuario    ante      la
                                navegación. Puede modificar el comportamiento del botón
                                atrás del navegador, complica la agregación a los bookmark del
                                navegador un estado concreto, etc.
                            •   Botón de volver atrás del navegador: Empleo de iframe
                                ocultos para almacenar el historial). Empleo de fragmento
                                identificador del URL (‘#’) y recuperación mediante JavaScript
                            •   Problema al agregar marcadores / favoritos: en un
                                momento determinado de la aplicación: Empleo del fragmento
                                identificador del URL (‘#’) y recuperación mediante JavaScript
                            •   Problemas al imprimir: páginas renderizadas dinámicamente

4.2.5.   Usos de Ajax

  Validación de datos de formularios en tiempo real: Identificadores de usuario, número
de serie, códigos postales u otro código especial que necesite validación en el lado del servidor
antes de ser enviado el formulario.

                    •   Autocompletado : Direcciones de correo, nombres, ciudades.
                    •   Operaciones de detalle: Obtener información más detallada de un
                        producto.
                    •   GUI avanzadas: Controles en árbol, menús, barras de progreso.
Refresco de datos

                    •    Notificaciones del servidor.
                    •    Actualizar o eliminar registros.
                    •    Expandir formularios web.
                    •    Devolver peticiones simples de búsqueda.
                    •    Editar árboles de categorías.

4.2.6.     Funcionamiento Ajax

                    1. Usuario provoca un evento.
                    2. Se crea y configura un objeto XMLHttpRequest.
                    3. El objeto XMLHttpRequest realiza una llamada al servidor.
                    4. La petición se procesa en el servidor.
                    5. El servidor retorna un documento XML que contienen el resultado.
                    6. El objeto XMLHttpRequest llama a la función callback() y procesa el
                       resultado.
                    7. Se actualiza el DOM de la página asociado con la petición con el
                       resultado devuelto.

4.2.7.     Ejemplos de Aplicaciones existentes en AJAX

                    •    Google suggest. A medida que se escribe en el formulario de
                         búsqueda, google "sugiere" los términos mas buscados en una lista
                         desplegable. Esa información que se muestra, son consultas
                         permanentes a la base de datos de google, pero en segundo plano,
                         logrando mantener al cliente en la misma página.
                    •    Google maps. Al mover el mapa con el ratón, los mapas que no
                         estaban en la pantalla van apareciendo sin cambiar al cliente de
                         página. En el momento que se mueven los mapas, google va enviando
                         los mapas que se van necesitando.

4.2.8.     ASP .NET Ajax control toolkit

4.2.8.1.    Introducción.

   ASP .NET 2.0 supone una enorme evolución en el mundo de los lenguajes Web. Una mayor
potencia, fiabilidad y eficiencia van cogidos de la mano de una gran capacidad de hacer la vida
más fácil a los programadores Web: lo que con otras arquitecturas de trabajo web nos costaría
sudor y lágrimas, con el framework ASP .NET 2.0 ya viene por defecto o requiere una sencilla
instalación.

  Y es que hoy por hoy está muy de moda Ajax (Asynchronous JavaScript and XML), con la
que se construyen las modernas web 2.0: “idas y vueltas” entre el servidor Web y el navegador
de nuestro visitante sin que la página se recargue. De este modo los programas de escritorio
quedan cada vez más obsoletos frente a los programas web.
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación
Herramienta software para la evaluación

More Related Content

Similar to Herramienta software para la evaluación

Analsis de sistemas
Analsis de sistemasAnalsis de sistemas
Analsis de sistemas4589PAREDES
 
Analsis de sistemas
Analsis de sistemasAnalsis de sistemas
Analsis de sistemas4589PAREDES
 
Metodologías De Diseño Y Desarrollo De Sistemas De Información
Metodologías De Diseño Y Desarrollo De Sistemas De InformaciónMetodologías De Diseño Y Desarrollo De Sistemas De Información
Metodologías De Diseño Y Desarrollo De Sistemas De Informacióndavinson garcia
 
Analisis y diseno
Analisis y disenoAnalisis y diseno
Analisis y disenomichelle_mc
 
Metodologías de Diseño y Desarrollo de Sistemas de Información
Metodologías de Diseño y Desarrollo de Sistemas de InformaciónMetodologías de Diseño y Desarrollo de Sistemas de Información
Metodologías de Diseño y Desarrollo de Sistemas de InformaciónErnesto Souquet Guevara
 
Ciclo de-vida-de-un-sistema-1
Ciclo de-vida-de-un-sistema-1Ciclo de-vida-de-un-sistema-1
Ciclo de-vida-de-un-sistema-1Tomasjz
 
Ciclo de vida de los sistemas de información
Ciclo de vida de los sistemas de informaciónCiclo de vida de los sistemas de información
Ciclo de vida de los sistemas de informaciónPadivihidalgo
 
Sistemas de informacion 2
Sistemas de informacion 2Sistemas de informacion 2
Sistemas de informacion 2Janetsy Salazar
 
Ciclo de vida de un sistema
Ciclo de vida de un sistemaCiclo de vida de un sistema
Ciclo de vida de un sistemaVictor Barraez
 
Etapas del desarrollo de software
Etapas del desarrollo de softwareEtapas del desarrollo de software
Etapas del desarrollo de softwarexinithazangels
 
Analisis y Desarrollo de Sistemas de Información
Analisis y Desarrollo de Sistemas de Información Analisis y Desarrollo de Sistemas de Información
Analisis y Desarrollo de Sistemas de Información Roberto Soto
 
TP04: ANÁLISIS Y DESARROLLO DE SISTEMAS DE INFORMACIÓN
TP04: ANÁLISIS Y DESARROLLO DE SISTEMAS DE INFORMACIÓNTP04: ANÁLISIS Y DESARROLLO DE SISTEMAS DE INFORMACIÓN
TP04: ANÁLISIS Y DESARROLLO DE SISTEMAS DE INFORMACIÓNArnaldo Federico Ledesma
 
Metodos de desarrollo de software educativo
Metodos de desarrollo de software educativoMetodos de desarrollo de software educativo
Metodos de desarrollo de software educativoSaturnino Delgado
 
CICLO DE VIDA Y DISEÑO DEL SISTEMAS DE INFORMACIÓN
CICLO DE VIDA Y DISEÑO DEL SISTEMAS DE INFORMACIÓNCICLO DE VIDA Y DISEÑO DEL SISTEMAS DE INFORMACIÓN
CICLO DE VIDA Y DISEÑO DEL SISTEMAS DE INFORMACIÓNErnesto Souquet Guevara
 

Similar to Herramienta software para la evaluación (20)

Analsis de sistemas
Analsis de sistemasAnalsis de sistemas
Analsis de sistemas
 
Analsis de sistemas
Analsis de sistemasAnalsis de sistemas
Analsis de sistemas
 
Analsis de sistemas
Analsis de sistemasAnalsis de sistemas
Analsis de sistemas
 
Foro 2do grupo (1)
Foro 2do grupo (1)Foro 2do grupo (1)
Foro 2do grupo (1)
 
Metodologías De Diseño Y Desarrollo De Sistemas De Información
Metodologías De Diseño Y Desarrollo De Sistemas De InformaciónMetodologías De Diseño Y Desarrollo De Sistemas De Información
Metodologías De Diseño Y Desarrollo De Sistemas De Información
 
Analisis y diseno
Analisis y disenoAnalisis y diseno
Analisis y diseno
 
Sistema
SistemaSistema
Sistema
 
Yamilet..
Yamilet..Yamilet..
Yamilet..
 
Metodologías de Diseño y Desarrollo de Sistemas de Información
Metodologías de Diseño y Desarrollo de Sistemas de InformaciónMetodologías de Diseño y Desarrollo de Sistemas de Información
Metodologías de Diseño y Desarrollo de Sistemas de Información
 
Ciclo de-vida-de-un-sistema-1
Ciclo de-vida-de-un-sistema-1Ciclo de-vida-de-un-sistema-1
Ciclo de-vida-de-un-sistema-1
 
Ciclo de vida de los sistemas de información
Ciclo de vida de los sistemas de informaciónCiclo de vida de los sistemas de información
Ciclo de vida de los sistemas de información
 
Sistemas de informacion 2
Sistemas de informacion 2Sistemas de informacion 2
Sistemas de informacion 2
 
Ciclo de vida de un sistema
Ciclo de vida de un sistemaCiclo de vida de un sistema
Ciclo de vida de un sistema
 
Articulo final ads
Articulo final adsArticulo final ads
Articulo final ads
 
LAIT602_AI_AVILA_ARTURO.pptx
LAIT602_AI_AVILA_ARTURO.pptxLAIT602_AI_AVILA_ARTURO.pptx
LAIT602_AI_AVILA_ARTURO.pptx
 
Etapas del desarrollo de software
Etapas del desarrollo de softwareEtapas del desarrollo de software
Etapas del desarrollo de software
 
Analisis y Desarrollo de Sistemas de Información
Analisis y Desarrollo de Sistemas de Información Analisis y Desarrollo de Sistemas de Información
Analisis y Desarrollo de Sistemas de Información
 
TP04: ANÁLISIS Y DESARROLLO DE SISTEMAS DE INFORMACIÓN
TP04: ANÁLISIS Y DESARROLLO DE SISTEMAS DE INFORMACIÓNTP04: ANÁLISIS Y DESARROLLO DE SISTEMAS DE INFORMACIÓN
TP04: ANÁLISIS Y DESARROLLO DE SISTEMAS DE INFORMACIÓN
 
Metodos de desarrollo de software educativo
Metodos de desarrollo de software educativoMetodos de desarrollo de software educativo
Metodos de desarrollo de software educativo
 
CICLO DE VIDA Y DISEÑO DEL SISTEMAS DE INFORMACIÓN
CICLO DE VIDA Y DISEÑO DEL SISTEMAS DE INFORMACIÓNCICLO DE VIDA Y DISEÑO DEL SISTEMAS DE INFORMACIÓN
CICLO DE VIDA Y DISEÑO DEL SISTEMAS DE INFORMACIÓN
 

More from IndependienteBC

20150127 decreto convivencia_escolar
20150127 decreto convivencia_escolar20150127 decreto convivencia_escolar
20150127 decreto convivencia_escolarIndependienteBC
 
Calendario badminton 2014
Calendario badminton 2014Calendario badminton 2014
Calendario badminton 2014IndependienteBC
 
Calendario gallego 2014 2015 (para jovenes independiente)
Calendario gallego 2014 2015 (para jovenes independiente)Calendario gallego 2014 2015 (para jovenes independiente)
Calendario gallego 2014 2015 (para jovenes independiente)IndependienteBC
 
Memoria deportiva 2012 13
Memoria deportiva 2012 13Memoria deportiva 2012 13
Memoria deportiva 2012 13IndependienteBC
 
Nperez mediaciondeportiva
Nperez mediaciondeportivaNperez mediaciondeportiva
Nperez mediaciondeportivaIndependienteBC
 
Razas de gatos para blog
Razas de gatos para blogRazas de gatos para blog
Razas de gatos para blogIndependienteBC
 
Wada prohibited-list-2013-esp
Wada prohibited-list-2013-espWada prohibited-list-2013-esp
Wada prohibited-list-2013-espIndependienteBC
 
Calendario gallego 2012 2013
Calendario gallego 2012 2013Calendario gallego 2012 2013
Calendario gallego 2012 2013IndependienteBC
 
Encuentros ranking sub 17 orense 29-12-12
Encuentros ranking sub 17 orense 29-12-12Encuentros ranking sub 17 orense 29-12-12
Encuentros ranking sub 17 orense 29-12-12IndependienteBC
 
Clubs badminton España si
Clubs badminton España siClubs badminton España si
Clubs badminton España siIndependienteBC
 
Historia federación española de bádminton
Historia federación española de bádmintonHistoria federación española de bádminton
Historia federación española de bádmintonIndependienteBC
 
Un nuevo test para medir la
Un nuevo test para medir laUn nuevo test para medir la
Un nuevo test para medir laIndependienteBC
 
Interviniendo ante la obesidad infantil a través del playminton
Interviniendo ante la obesidad infantil a través del playmintonInterviniendo ante la obesidad infantil a través del playminton
Interviniendo ante la obesidad infantil a través del playmintonIndependienteBC
 
Estudio de la ansiedad precompetitiva
Estudio de la ansiedad precompetitivaEstudio de la ansiedad precompetitiva
Estudio de la ansiedad precompetitivaIndependienteBC
 
El bádminton de competición
El bádminton de competiciónEl bádminton de competición
El bádminton de competiciónIndependienteBC
 
19885636v15n2p263evaluación conductual y programa de asesorameiento a técnicos
19885636v15n2p263evaluación conductual y programa de asesorameiento a técnicos19885636v15n2p263evaluación conductual y programa de asesorameiento a técnicos
19885636v15n2p263evaluación conductual y programa de asesorameiento a técnicosIndependienteBC
 
Modelo memoria deportiva 2011 12 .docsisisi
Modelo memoria deportiva 2011 12 .docsisisiModelo memoria deportiva 2011 12 .docsisisi
Modelo memoria deportiva 2011 12 .docsisisiIndependienteBC
 

More from IndependienteBC (20)

20150127 decreto convivencia_escolar
20150127 decreto convivencia_escolar20150127 decreto convivencia_escolar
20150127 decreto convivencia_escolar
 
Calendario badminton 2014
Calendario badminton 2014Calendario badminton 2014
Calendario badminton 2014
 
Calendario gallego 2014 2015 (para jovenes independiente)
Calendario gallego 2014 2015 (para jovenes independiente)Calendario gallego 2014 2015 (para jovenes independiente)
Calendario gallego 2014 2015 (para jovenes independiente)
 
Memoria deportiva 2012 13
Memoria deportiva 2012 13Memoria deportiva 2012 13
Memoria deportiva 2012 13
 
Nperez mediaciondeportiva
Nperez mediaciondeportivaNperez mediaciondeportiva
Nperez mediaciondeportiva
 
Revista mediara1
Revista mediara1Revista mediara1
Revista mediara1
 
Razas de perros
Razas de perrosRazas de perros
Razas de perros
 
Razas de gatos para blog
Razas de gatos para blogRazas de gatos para blog
Razas de gatos para blog
 
Wada prohibited-list-2013-esp
Wada prohibited-list-2013-espWada prohibited-list-2013-esp
Wada prohibited-list-2013-esp
 
Boe a-2012-15381
Boe a-2012-15381Boe a-2012-15381
Boe a-2012-15381
 
Calendario gallego 2012 2013
Calendario gallego 2012 2013Calendario gallego 2012 2013
Calendario gallego 2012 2013
 
Encuentros ranking sub 17 orense 29-12-12
Encuentros ranking sub 17 orense 29-12-12Encuentros ranking sub 17 orense 29-12-12
Encuentros ranking sub 17 orense 29-12-12
 
Clubs badminton España si
Clubs badminton España siClubs badminton España si
Clubs badminton España si
 
Historia federación española de bádminton
Historia federación española de bádmintonHistoria federación española de bádminton
Historia federación española de bádminton
 
Un nuevo test para medir la
Un nuevo test para medir laUn nuevo test para medir la
Un nuevo test para medir la
 
Interviniendo ante la obesidad infantil a través del playminton
Interviniendo ante la obesidad infantil a través del playmintonInterviniendo ante la obesidad infantil a través del playminton
Interviniendo ante la obesidad infantil a través del playminton
 
Estudio de la ansiedad precompetitiva
Estudio de la ansiedad precompetitivaEstudio de la ansiedad precompetitiva
Estudio de la ansiedad precompetitiva
 
El bádminton de competición
El bádminton de competiciónEl bádminton de competición
El bádminton de competición
 
19885636v15n2p263evaluación conductual y programa de asesorameiento a técnicos
19885636v15n2p263evaluación conductual y programa de asesorameiento a técnicos19885636v15n2p263evaluación conductual y programa de asesorameiento a técnicos
19885636v15n2p263evaluación conductual y programa de asesorameiento a técnicos
 
Modelo memoria deportiva 2011 12 .docsisisi
Modelo memoria deportiva 2011 12 .docsisisiModelo memoria deportiva 2011 12 .docsisisi
Modelo memoria deportiva 2011 12 .docsisisi
 

Herramienta software para la evaluación

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