SlideShare una empresa de Scribd logo
1 de 74
GC TENIS UDEA                                                       U. de A.
VERSION 1 – RTF 3                                             Seminario de
ENFOQUE ARQUITECTONICO                             Arquitectura de Software




  Gestión de Canchas de préstamo de tenis de la
              Universidad de Antioquia




                         Código: GC Tenis UdeA
                           Número: 20121- 3


                         Equipo de Trabajo
                                Asesor
                         Juan Bernardo Quintero


                              Integrantes
                         Santiago Agudelo Ibarra
                            Alejandro Suárez
                          Jaime Alberto Flórez
                             Nelson Puerta
GC TENIS UDEA                                                                         U. de A.
VERSION 1 – RTF 3                                                               Seminario de
ENFOQUE ARQUITECTONICO                                               Arquitectura de Software



                                         Historia
Versión   Fecha                            Descripción o Cambios introducidos
  1.1   24/07/2012 Investigación de las plataformas
  1.2     26/07/2012 Selección de la plataforma
  1.3     28/07/2012 Investigación de los Frameworks
  1.4      1/08/2012   Selección del Framework
  1.5      4/08/2012   Arquitectura del Framework
  1.6     13/08/2012 Montaje de la aplicación e implementación
  1.7     14/08/2012 Implementación


                                           Roles
      Nombre del Rol           Numerales Asignados                  Nombre del Estudiante
Arquitecto 1                           1,2             Nelson Puerta
Arquitecto 2                            1,2            Jaime Alberto Flórez
Arquitecto 3 e                         1,2,3           Alejandro Suárez
Implementador
Arquitecto 4 e                         1,2,3           Santiago Agudelo Ibarra
Implementador




                                                 2
GC TENIS UDEA                                                                                                U. de A.
VERSION 1 – RTF 3                                                                                      Seminario de
ENFOQUE ARQUITECTONICO                                                                      Arquitectura de Software


1. TABLA DE CONTENIDO
                                                                                                                      Pág.
1.SELECCIÓN DE LA PLATAFORMA...................................................................... 6
1.1.Ruby On Rails......................................................................................................6
1.1.1.Características a evaluar de la plataforma.......................................................7
1.2 Plataforma basada en PHP, LAMP................................................................... 12
1.2.1Características a evaluar de la plataforma......................................................14
1.3 Plataforma .NET (ASP/ASPX.NET)...................................................................18
1.3.1Características a evaluar de la plataforma......................................................23
1.4 JEE.....................................................................................................................25
1.4.1Características a evaluar de la plataforma......................................................27
1.4.2GlassFish......................................................................................................... 29
1.5 Valoración de las características.......................................................................34
1.6 Calificación de cada Plataforma........................................................................34
1.7 Computo de totales y selección de la mejor plataforma. ...................................35
2SELECCIÓN DEL FRAMEWORK.........................................................................35
2.1ICEfaces..............................................................................................................36
2.1.1Características a evaluar del Framework. .......................................................36
2.2 Java Persistence API (JPA)...............................................................................38
2.2.1Características a evaluar del framework. ........................................................39
2.3Hibernate.............................................................................................................41
2.3.1 Caracteristicas a evaluar del Framework....................................................... 44
2.4 TOP LINK..........................................................................................................45
2.4.1Características a evaluar del Framework........................................................49
2.5Valoración de las características........................................................................51
2.6 Calificación de cada Framework........................................................................51
2.7 Computo de totales y selección del mejor Framework. .....................................52




                                                              3
GC TENIS UDEA                                                                                               U. de A.
VERSION 1 – RTF 3                                                                                     Seminario de
ENFOQUE ARQUITECTONICO                                                                     Arquitectura de Software




2. LISTA DE FIGURAS
                                                                                                                     Pág.


Figura 1 Ejemplo de codificación en Ruby................................................................7
Figura 2 Flujo de datos en PHP...............................................................................13
Figura 3 Common Language Runtime (CLR)..........................................................19
Figura 4 Biblioteca de clases .NET..........................................................................22
Figura 5 Flujo de datos en .NET..............................................................................23
Figura 6 Capas de JEE............................................................................................26
Figura 7 Características JEE...................................................................................29
Figura 8 GlassFish...................................................................................................30
Figura 9 Valoración de las características...............................................................34
Figura 10 Calificación de cada plataforma..............................................................35
Figura 11 Calificación total de cada plataforma......................................................35
Figura 12 Librerías de excepciones.........................................................................40
Figura 13 Arquitectura Hibernate.............................................................................42
Figura 14 Arquitectura TOPLINK.............................................................................46
Figura 15 Esquema TOPLINK.................................................................................48
Figura 16..................................................................................................................48
Figura 17 Valoración de las características.............................................................51
Figura 18 Calificación de cada Framework.............................................................51
Figura 19 Calificación total cada Framework..........................................................52
Figura 20 Vista de alto nivel del API de Hibernate en una arquitectura por Capas 53
Figura 21 Instalación complemento de Hibernate...................................................55
Figura 22 Crear aplicación WEB.............................................................................56
Figura 23 Servidor GlassFish..................................................................................56
Figura 24 Configuración del documento hibernate.cfg.xml.....................................57
Figura 25 Ingenieria inversa de Hibernate..............................................................58
Figura 26..................................................................................................................59

                                                             4
GC TENIS UDEA                                                                                               U. de A.
VERSION 1 – RTF 3                                                                                     Seminario de
ENFOQUE ARQUITECTONICO                                                                     Arquitectura de Software


Figura 27 Mapeo objetos Hibernate........................................................................59
Figura 28..................................................................................................................59
Figura 29 Generar el código de los POJOS............................................................60
Figura 30 Crear archivo HibernateUtil.java.............................................................61




                                                             5
GC TENIS UDEA                                                                 U. de A.
VERSION 1 – RTF 3                                                       Seminario de
ENFOQUE ARQUITECTONICO                                       Arquitectura de Software




                        1. SELECCIÓN DE LA PLATAFORMA
   1.1. Ruby On Rails
La siguiente plataforma fue investigada por: Santiago Agudelo Ibarra


                                  Ruby On Rails




Descripción: Ruby on Rails fue escrito por David Heinemeier Hansson a partir de
su trabajo en Basecamp, una herramienta de gestión de proyectos, por 37signals.
Fue liberado al público por primera vez en Julio de 2004.

Ruby on Rails: es un entorno de desarrollo web de código abierto que está
optimizado para satisfacción de los programadores y de la productividad. Te
permite escribir un buen código favoreciendo la convención antes que la
configuración.


Ruby: es un lenguaje con un balance cuidado. Su creador, Yukihiro “matz”
Matsumoto, mezcló partes de sus lenguajes favoritos (Perl, Smalltalk, Eiffel, Ada, y
Lisp) para formar un nuevo lenguaje que incorporara tanto la programación
funcional como la programación imperativa.


Rails: es un framework de desarrollo de aplicación web escrita en lenguaje Ruby.
Está diseñado para hacer programación de aplicaciones web más fácil al hacer
suposiciones sobre lo que todo desarrollador necesita para comenzar y te permite
escribir menos código.
Rails es firme; esto hace la suposición que hay una “mejor” manera de hacer las
cosas, y está diseñando para estimular de esa manera. Si puede aprender de
“The Rails way” probablemente se descubrirá un gran incremento en la
productividad.

                                         6
GC TENIS UDEA                                                                        U. de A.
VERSION 1 – RTF 3                                                              Seminario de
ENFOQUE ARQUITECTONICO                                              Arquitectura de Software


La filosofía de Rails:
   •   “No Repeat Yourself” – esto sugiere que escribir el código una y otra vez es
       malo.

   •   Convención sobre configuración - significa que Rails hace suposiciones
       sobre lo que quieres hacer y cómo lo vamos a hacer, en lugar de pedirle
       que especifique cada pequeña cosa a través de los archivos de
       configuración sin fin.

   •   El Orden es el mejor patrón para las aplicaciones web - la organización de
       su aplicación en torno a los recursos y verbos HTTP estándar es la forma
       más rápida de llegar a tu objetivo.

       1.1.1. Características a evaluar de la plataforma

   •   Documentación

La documentación de Ruby on Rails principalmente esta en inglés, en su página
oficial se puede encontrar desde sus principales características hasta una
descripción más detallada de todo su entorno de desarrollado.

Ejemplo: este es la suma del número 5 con el numero 6 el cual es asignado a la
variable y.




                         Figura 1 Ejemplo de codificación en Ruby

La comunidad de desarrollo es amplia de la cual hay tres principales
componentes los cuales son:

Wiki
El wiki Reils: es el sitio perfecto para las contribuciones de los usuarios a la
documentación

Listas de correo


                                            7
GC TENIS UDEA                                                                 U. de A.
VERSION 1 – RTF 3                                                       Seminario de
ENFOQUE ARQUITECTONICO                                       Arquitectura de Software


Donde los usuarios de Rails vienen a pedir ayuda, anunciar proyectos, y discutir
todo tipo de asuntos que envuelven al entorno y a la comunidad.
Planeta Rails
Se han creado multitud de blogs donde hablan y escriben mini tutoriales de Ruby
on Rails. Para agrupar a todos, se ha creado Planeta Rails.

Página oficial: http://rubyonrails.org/
   •   Seguridad

Manejo de usuarios: Existe un plugin para Ruby on Rails llamado Acts As
Authenticated que nos ahorra la siempre repetitiva tarea de la autenticación (login)
de usuarios en RoR, crea el modelo para el usuario, el controlador y las vistas
para realizar login, logout, comprobar si el usuario esta autenticado, etc …

Mecanismos de personalización de menús para la adecuada implementación
de roles

Posee soporte para múltiples proyectos, flexibilidad en el manejo de roles, sistema
de seguimiento, diagrama de Gantt y calendario, noticias. Llama la atención por la
posibilidad de crear Wikis y foros por proyecto.

   •   Facilidad de uso:

Para usuarios de Debian o Ubuntu:

sudo apt-get install ruby irb rdoc


Versión Windows

Descargas     el   ruby    desde   la  página     oficial: Rubyonrails.org
Siguiente> Siguiente> Aceptar> No >deseo registrarme luego. Muy bien hasta
aquí ya tenemos instalado Ruby.
Los archivos deberán ser descargados en un sólo directorio y los comandos
ejecutados en ese directorio. Si disponemos de conexión a internet el trabajo se
resumen                                                                      en:
gem install rails –include-dependencies. Para una instalación manual debemos
descargarnos cada uno de los módulos:
     gem install rake-0.7.1.gem
     gem install activesupport-1.3.1
     gem install activerecord-1.14.4.gem

                                          8
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software


      gem install actionpack-1.12.5.gem
      gem install actionmailer-1.2.5.gem
      gem install actionwebservice-1.1.6.gem
      gem install rails-1.1.6.gem

Actualizaciones:
Esta también es hecha en la misma página oficial la cual tiene un link que dice
“Add-ons” el cual permite hacer las actualizaciones correspondientes...
   •   Manejo de errores:

En Ruby on Rails, el tratamiento de excepciones se encapsula entre
cláusulasbegin y end de la siguiente forma:


   1. begin
   2.    # codigo...
   3. rescue TIPO_EXCEPCION_1
   4.    STDERR.puts "Ha ocurrido un problema de tipo 1"
   5. rescue TIPO_EXCEPCION_2
   6.    STDERR.puts "Ha ocurrido un problema de tipo 2"
   7. else
   8.    STDERR.puts "Ha ocurrido otro problema"
   9. ensure
   10. # se ejecuta siempre haya o no excepción
   11. end

Tipos de excepciones

A continuación mostramos los tipos de excepciones de Ruby:

   •   Exception
          o fatal
          o NoMemoryError
          o ScriptError
                  LoadError
                  NotImplementedError
                  SyntaxError
          o SignalException
                  Interrupt
          o StandardError
                  ArgumentError

                                        9
GC TENIS UDEA                                                               U. de A.
VERSION 1 – RTF 3                                                     Seminario de
ENFOQUE ARQUITECTONICO                                     Arquitectura de Software


                      IOError
                           EOFError
                     IndexError
                     LocalJumpError
                     NameError
                           NoMethodError
                     RangeError
                           FloatDomainError
                     RegexpError
                     RuntimeError
                     SecurityError
                     SystemCallError
                           Errorno::__ (ENOENT, etc.) (system-dependent)
                     ThreadError
                     TypeError
                     ZeroDivisionError
           o     SystemExit
           o     SystemStackError

Lanzar excepciones

Podemos lanzar excepciones propias usando la palabra raise:

   1.   def metodo_que_lanza_excepcion
   2.   raise "error 1"
   3.   end
   4.   metodo_que_lanza_excepcion rescue puts $!

El código anterior definimos un método y luego fuera de este método definimos
qué pasará cuando se lance la excepción. En este ejemplo imprimimos con el
comando puts el mensaje que se pasa por parámetro: "error

   •    Soporte a nuevos estándares de la Web :

Web 2.0
Permite crear aplicaciones web más interactivas y fluidas, transformando la web
tradicional en aplicaciones más parecidas a las que un usuario podría esperar en
su escritorio.
Ruby on Rails se basa en la tecnología Web 2.0 y por lo tanto se puede enlazar
fácilmente. Además, las aplicaciones web responden a las acciones del visitante



                                         10
GC TENIS UDEA                                                                   U. de A.
VERSION 1 – RTF 3                                                         Seminario de
ENFOQUE ARQUITECTONICO                                         Arquitectura de Software


sin tener que cargar toda la página web de nuevo, son una parte fundamental del
éxito de una página web.
Funciones web 2.0 que incluyen la implementación de técnicas relacionadas con
Ajax y el desarrollo de los efectos visuales están a disposición del programador.
Web 3.0
Los usuarios pueden conseguir un cambio drástico en la apariencia y la sensación
de aplicaciones web e incluso en presencia de toda Internet.
Adobe ® Flex ™ 2 es una solución de desarrollo de aplicaciones para crear y
entregar aplicaciones con potencial para la web 3.0
   •   Mecanismos de Licenciamiento:

Rails está liberado bajo la licencia MIT. Ruby bajo la licencia Ruby

"Rails", "Ruby on Rails", y el logo de Rails son marcas registradas de David
Heinemeier    Hansson.
Licencia MIT:
Se concede permiso, de forma gratuita, a cualquier persona que obtenga una
copia de este software y los archivos de documentación asociados
Licencia Ruby:
Rubí tiene derechos de autor de software libre por Yukihiro Matsumoto.
Robustez:
Carece de total robustez, con el solo hecho de permitirse redefinir un método 100
veces en una misma clase. También porque me permite reabrir las clases para
seguir añadiendo métodos. En cuanto a Rails tiene una arquitectura 2 capas en la
que las clases y no existe una capa de persistencia separada.
Escalabilidad: es escalable porque no solo se centra en problemas comunes a su
plataforma si no en muchas otras que se basa en el paradigma de convención
frente a configuración, la compañía refuerza esa idea de que realmente RoR
escala, pero que es cuestión de ir madurando la plataforma y que aparezcan más
soluciones.



                                        11
GC TENIS UDEA                                                               U. de A.
VERSION 1 – RTF 3                                                     Seminario de
ENFOQUE ARQUITECTONICO                                     Arquitectura de Software




La siguiente plataforma fue investigada por: Jaime Alberto Flórez.

1.2 Plataforma basada en PHP, LAMP




LAMP es una conjunto de sistemas de software que tienen como objetivo el dar
apoyo al desarrollo de aplicaciones Web; Linux, Apache, MySQL, PHP no fueron
específicamente creadas para ser fusionadas entre sí; sin embargo debido a su
popularización entre desarrolladores por la presentación de un gran número de
ventajas tales como bajos costos, adaptabilidad, eficacia en la organización de
componentes y el uso adecuado del paradigma Cliente/Servidor, el LAMP se ha
hecho una de las opciones más apetecidas para su uso en la ingeniería de
software.

Linux:
Es un sistema operativo basado con énfasis en el software y libre y sobre todo la
seguridad, Linux es combinado con herramientas del proyecto GNU por lo que
comúnmente se hace referencia a Linux como GNU/Linux, Linux posee varios
tipos de Distribuciones, tales como Ubuntu o Debian que son las distribuciones
más populares, siendo la primera una distribución comercial y la segunda una
distribución mantenida por la comunidad Linux.

Apache (Servidor HTTP Apache):
Apache es un servidor web de código abierto, es decir que puede ser usado de
forma libre y modificado como sea conveniente, es el servidor web más usado
actualmente alrededor del mundo alojando paginas estáticas y dinámicas, muchas
aplicaciones web están desarrolladas con base a Apache o utilizan características
propias de este, con apache también pueden ser compartidos archivos desde el
internet, con solo poner los archivos en la raíz de documentos de Apache, Apache
trabaja con una gran cantidad de Scripts, tales como PHP, Perl, Java y paginas
JSP, es configurable para ejecutar scripts que ayuden en el manejo de errores.

MySQL:
Sistema de Base de Datos Relacional propiedad de Sun Mycrosystems y Oracle
Corporation, MySQL es software libre, mas no es de código abierto, por lo que el
software puede usarse sin necesidad de hacer compra de una licencia privativa

                                       12
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software


pero su código fuente no puede ser modificado. SQL (Lenguaje de Consulta
Estructurado) es un estándar para las bases de datos relacionales, comercializado
desde 1981, MySQL maneja el estándar SQL pero proporcionando velocidad y
fiabilidad; MySQL se adapta a una gran variedad de lenguajes de programación
debido a que estos lenguajes contienen API para ligar se con MySQL, algunos de
los lenguajes más populares que poseen esta característica son; Java, Perl, C++,
Pascal, PHP, Python y Ruby.

MySQL es fácil de instalar y configurar bajo cualquier sistema operativo, no
solamente posee facilidades en su instalación sino que también se accede
fácilmente a las consultas con tan solo un comando (SELECT * FROM).

PHP:
PHP (Hypertext Pre-processor) es un Lenguaje de Programación Interpretado
creado en 1994 cuyo Software es Libre, su funcionalidad primordial es la creación
de páginas web dinámicas, PHP se puede ejecutar en la mayoría de navegadores
y en casi todas las plataformas.

PHP es un lenguaje muy fácil de usar compartiendo estructuras similares a las de
C, por lo que los programadores deben dedicar poco tiempo a aprender este
nuevo lenguaje.

El PHP es un lenguaje interpretado que se ejecuta en el servidor y envía las
respuestas en forma de html al navegador del usuario, por lo que casi cualquier
maquina (incluso dispositivos móviles) pueden ver páginas web php.




                           Figura 2 Flujo de datos en PHP

                                        13
GC TENIS UDEA                                                              U. de A.
  VERSION 1 – RTF 3                                                    Seminario de
  ENFOQUE ARQUITECTONICO                                    Arquitectura de Software




1.2.1 Características a evaluar de la plataforma
  •   Portabilidad:

      La portabilidad bajo la plataforma LAMP es un bastante eficaz, debido a que
      PHP y MySQL pueden estar contenidos ya sea en Windows o en Linux, por su
      parte PHP está disponible para casi cualquier sistema operativo desde Unix
      hasta Mac, PHP puede funcionar bajo cualquier sistema operativo sin
      necesidad de cambios en el código MySQL es un gestor de bases de datos
      multiplataforma que combinado con PHP posee una gran Portabilidad.

  •   Seguridad:

      Al ser software Libre, Linux, Apache, PHP y MySQL, puede ser adaptada a las
      necesidades como nos sea conveniente (mediante el entendimiento de cómo
      funcionan), los errores encontrados en cada una de las aplicaciones son
      manejados y solucionados por la comunidad de uso LAMP alrededor del
      mundo, que sueles planear estrategias y mejoras, divulgándolas por medio de
      la Web, cuando se encuentran agujeros de seguridad, rápidamente se generan
      parches que solucionan el inconveniente, sin embargo la configuración de
      algunos servicios WEB requiere más tiempo que en el sistema operativo
      Windows aunque no es gran desventaja teniendo en cuenta que brinda mayor
      seguridad que en Windows.

  •   Rendimiento:
                                        14
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software




    La combinación de Linux con Apache es claramente superior al rendimiento
    que da Windows, utilizando a PHP para la lógica del negocio y MySQL para la
    persistencia, PHP y MySQL bajo Windows posee una gran serie de fallos,
    mientras que el uso de Linux nos ayuda a adaptar el desarrollo a nuestras
    necesidades y manejar fallos satisfactoriamente.

•   Documentación:

    Todos los aplicativos que componen el LAMP tienen un gran auge alrededor
    del mundo, por lo que no es raro hallar referencias variadas en la internet y
    una gran comunidad interesada en aprender y resolver dudas, Linux por
    ejemplo posee una gran comunidad de usuarios y desarrolladores en todo el
    planeta, dando apoyo y creando nuevas tecnologías para el uso de todos,
    además de los programadores aficionados en la internet también existe
    documentación oficial de cada uno de los aplicativos, para Apache, PHP y
    MySQL,; http://www.apache2.es/, http://www.mysql.com/, http://www.php-
    es.com/.


•   Facilidad de Uso / Curva de Aprendizaje:

    Aunque para algunos usuarios Novatos les resulte difícil la instalación de
    cualquier aplicación en Linux mediante el uso de comandos, la instalación de
    Apache, MySQL y PHP en Linux es bastante sencilla, simplemente utilizando
    el comando apt-get install típico se instala cada componente del LAMP
    (Apache, MySQL, PHP), sin embargo es recomendable primero instalar el
    servidor Apache, para que de este modo pueda configurarse correctamente
    php y MySQL, por otro lado el proceso de actualización para cada aplicación
    se lleva a cabo por Linux cada vez que sea conveniente, por lo que el usuario
    de LAMP no tiene mucho de qué preocuparse en cuanto a este tema, gracias
    a la documentación es de facilidad para cualquier usuario la adaptación a esta
    plataforma.

•   Manejo de Errores:

      Además de que Apache trata de controlar adecuadamente los errores
    mediante su lógica interna o con el uso de Scripts, PHP se encarga de
    manejar y capturar errores, por lo que nos es más fácil identificar donde están
    los problemas de desarrollo en nuestro Sistema, cuando se trabaja PHP en
    conjunto con MySQL es fácil identificar cuando hay problemas de conexión
    con la base de datos, por lo que con ello podríamos controlar la situación
    mostrando un simple mensaje al usuario o procediendo de una forma más
    compleja; al igual que Java PHP5 puede utilizar bloques try/catch, a diferencia

                                        15
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software


    de su versión anterior.

•   Robustez:

    Linux se caracteriza por su Robustez, aunque sufra algún cambio de
    configuración no es necesario reiniciar el sistema, puede pasar meses e
    incluso años en uso sin que su estructura se afecte, si un programa llega a
    fallar no afecta el sistema, Linux posee un gran número de módulos muchos
    de estos hacen el trabajo de controlar situaciones de error y desbordamiento
    adicional, PHP posee una gran utilidad para el manejo de errores, mientras
    que MySQL es uno de los motores de bases de datos más potentes y robustos
    en el mercado caracterizado por soporte ACID, soporte de transacciones
    múltiples, asegura integridad de los datos mediante niveles de aislamiento de
    transacciones y detección de deadlocks.

•   Escalabilidad:

    LAMP es caracterizada por ofrecer lo último en escalabilidad ofrecida
    especialmente por MySQL, puede manejar bases de datos empotradas que
    manejan una pequeña cantidad de espacio en memoria, también podría
    manejar datos que contenga muchos terabytes de información, un software
    creado en LAMP tiene grandes posibilidades adaptarse a los cambios con
    respecto al tiempo, PHP, Linux, MySQL poseen facilidades de adaptación
    respecto a la evolución del software.


•   Interoperabilidad / Flexibilidad:

    Al basarse en OpenSource LAMP posee una gran ventaja, cualquier
    programador puede hacer ventaja de esto, adaptando el software como mas le
    sea conveniente, utilizando los componentes que desee e interactuando con
    diferentes tecnologías, MySQL, PHP y Apache son multiplataforma, por tanto
    la flexibilidad que ofrecen es enorme, pueden ser migrados a casi cualquier
    Sistema Operativo.

•   Licenciamiento:

    Al tener Licencia pública, LAMP cumple con una serie de ventajas, Garantiza
    la Posibilidad de Modificarse, se obtienen las actualizaciones y nuevas
    versiones de cada uno de los programas que lo componen de manera
    totalmente gratuita, contiene un gran número de bibliotecas distribuidas en la
    Web; sin embargo si sucede algún fallo con el uso de alguno de los
    programas, no se es redimido por el problema y el usuario deberá asumir los
    costos según sea el fallo.

                                        16
GC TENIS UDEA                                  U. de A.
VERSION 1 – RTF 3                        Seminario de
ENFOQUE ARQUITECTONICO        Arquitectura de Software




                         17
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software




    La siguiente plataforma fue investigada por: Alejandro Suárez

1.3 Plataforma .NET (ASP/ASPX.NET)




La plataforma .NET es la propuesta diseñada por Microsoft para el desarrollo de
aplicaciones orientadas a objetos donde el código pueda ser ejecutado de manera
local, distribuida o remota1.
A grandes rasgos la plataforma .NET proporciona un entorno de ejecución
administrado donde el desarrollo y la implementación se vuelven procesos
simplificados y la integración de una gran variedad de lenguajes de programación
permite la interoperabilidad y comunicación directa del software a través de
internet; todo esto de una manera coherente, segura y sencilla.
.NET ofrece muchas posibilidades para que servicios y programas puedan
interactuar. Si bien el concepto principal de la plataforma .NET es la idea de
servicios web mediante el uso de las tecnologías de internet, la plataforma
también provee herramientas para otros tipos de aplicaciones.2
Para desarrollar aplicaciones para la plataforma .NET (tanto servicios Web como
aplicaciones tradicionales) Microsoft ha publicado el denominado kit de desarrollo
de software conocido como .NET Framework.3 En la actualidad, la última versión
de .NET Framework es la versión 4.0 (22 de Marzo de 2010).
.NET Framework está constituido en tres partes fundamentales: el Common
Language Runtime, la biblioteca de clases y ASP.NET.



                                        18
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software


   •   Common Language Runtime (CLR)
       Es el motor de la plataforma en tiempo de ejecución, se encarga de
       administrar la ejecución del código que ha sido compilado además de
       proporcionar servicios centrales tales como la comunicación remota, la
       administración de la memoria y el manejo de los subprocesos creados.




                      Figura 3 Common Language Runtime (CLR)



Una manera de entender la funcionalidad del CLR es asimilarlo con la máquina
virtual de java.4,5
Las dos principales características del CLR son ser multiplataforma y
multilenguaje, la primera permite lograr que el CLR ejecute cualquier aplicación
diseñada para la plataforma .NET, para que esto suceda es necesario que exista
el CLR para la plataforma en que se desarrolla la aplicación. Como la
especificación del CLR se encuentra abierta, es posible hoy en día ejecutar
aplicaciones no solo en las diferentes versiones de Windows sino también en
Linux y a futuro podría hacerse para otros sistemas operativos.
Al ser multilenguaje la plataforma .NET permite desarrollar componentes de
software utilizando casi cualquier lenguaje de programación, de forma que lo que

                                        19
GC TENIS UDEA                                                                 U. de A.
VERSION 1 – RTF 3                                                       Seminario de
ENFOQUE ARQUITECTONICO                                       Arquitectura de Software


se escribe en un lenguaje se pueda utilizar en otro de la manera más fácil, sencilla
y transparente posible, para lograr esto es necesario establecer ciertas reglas o
directrices comunes en los lenguajes; también es posible encontrar varios
compiladores para lenguajes para la plataforma .NET tales como Visual Basic
.NET, C#, Eiffel entre otros.
A la fecha la plataforma .NET soporta ya más de 20 lenguajes6 de programación lo
que ha permitido eliminar las diferencias que existían entre lo que se podía hacer
con un lenguaje u otro.
El CLR está diseñado para realizar las cosas de manera segura y sólida, esto es
llevado a cabo mediante los siguientes servicios:
        Cargador de Clases: permite cargar en memoria las clases que se van a
           utilizar.
          Common Intermediate Language: Transforma a código intermedio de
           alto nivel de manera independiente del hardware que lo ejecuta y lo
           convierte a código maquina propio del dispositivo. Anteriormente
           conocido como MSIL por Microsoft Intermediate Language.
          Administrador de Código: coordina toda la operación de los distintos
           subsistemas del CLR.
          Recolector de Basura: elimina de memoria objetos no utilizados.
          Motor de Seguridad: administra la seguridad del código que se ejecuta.
          Motor de Depuración: permite hacer un seguimiento (paso a paso) de la
           ejecución del código aún cuando se utilicen lenguajes distintos.
          Verificador de Tipos: controla que las variables de la aplicación usen el
           área de memoria que tienen asignado.
          Administrador de Excepciones: maneja los errores que se producen
           durante la ejecución del código.
          Soporte de multiproceso (threads): permite ejecutar código en forma
           paralela al trabajar con hilos.
          Empaquetador de COM: coordina la comunicación con los componentes
           COM para que puedan ser usados por el .NET Framework.
          Soporte de la Biblioteca de Clases Base: representa una interfaz con las
           clases base del .NET Framework.


   •   Biblioteca de Clases:


                                         20
GC TENIS UDEA                                                               U. de A.
VERSION 1 – RTF 3                                                     Seminario de
ENFOQUE ARQUITECTONICO                                     Arquitectura de Software


     Es una completa colección orientada a objetos con el fin de ser reutilizables
     y empleadas para desarrollar aplicaciones que abarcan desde las
     tradicionales (GUI) hasta las basadas en las innovaciones más recientes
     proporcionadas por ASP.NET, como los formularios Web Forms y los
     servicios Web XML.



     Los tipos de .NET Framework utilizan un esquema de nomenclatura con
     sintaxis de punto lo que indica la existencia de una jerarquía. Esta técnica
     agrupa tipos relacionados en espacios de nombres para que se pueda
     buscar y hacer referencia a ellos más fácilmente y permite integrar
     fácilmente los componentes de terceros.




                                      21
GC TENIS UDEA                                                                   U. de A.
VERSION 1 – RTF 3                                                         Seminario de
ENFOQUE ARQUITECTONICO                                         Arquitectura de Software




                          Figura 4 Biblioteca de clases .NET




  •   ASP.NET
      Es la parte más importante de la capa superior de la plataforma, ASP.NET
      es usada para la construcción de sitios web dinámicos, aplicaciones web y
      servicios web XML, es conocida como sucesora de la tecnología ASP pero
      reconsiderada hoy en día como mas que su evolución debido a las
      diferentes incorporaciones que se le han hecho.



      Una de las principales características de ASP.NET es lograr separar de una
      manera limpia la parte lógica de la aplicación de la interfaz lo cual ha
      supuesto una nueva idea y forma de programar las aplicaciones web al
      hacerlo más fácil (el desarrollo de las aplicaciones web no es considerado
      como un trabajo fácil debido a la mezcla de lenguajes de etiquetas y


                                        22
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software


      conexiones y a que implica tener otros conocimientos con respecto a la
      aplicaciones tradicionales).7



      Al incorporar los servicios web se ha permitido la descentralización del
      software en la red lo cual ofrece un nuevo enfoque: el de la web orientada a
      objetos. Las páginas de ASP.NET, conocidas oficialmente como "web
      forms" (formularios web), son el principal medio de construcción para el
      desarrollo de aplicaciones web, su extensión es .aspx y está constituido por
      etiquetas y código dinámico.

      ASP.NET fomenta la separación de la presentación y del código mediante
      el modelo Code-behind el cual distribuye el código de cada una de las
      capas en archivos diferentes logrando una alta cohesión, este modelo se
      puede asemejar con la separación del modelo vista controlador (MVC).

      Adicionalmente, ASP.NET permite la creación de componentes reutilizables
      lo cual se realiza a través de la biblioteca de clases.

      Por último, ASP.NET sólo funciona sobre el servidor de Microsoft IIS, lo que
      supone una desventaja respecto a otros lenguajes del lado de servidor,
      ejecutables sobre otros servidores más populares como Apache7.




                          Figura 5 Flujo de datos en .NET
      1.3.1 Características a evaluar de la plataforma
  •   Portabilidad: la plataforma .NET es teóricamente agnóstica con respecto a
      la plataforma debido al CLR pero como se mencionó anteriormente ya se
      ha implementado para Linux y a futuro puede hacerse para otros sistemas
      operativos.


                                        23
GC TENIS UDEA                                                               U. de A.
VERSION 1 – RTF 3                                                     Seminario de
ENFOQUE ARQUITECTONICO                                     Arquitectura de Software


  •   Seguridad: la plataforma cuenta con un motor de seguridad (Código de
      Acceso de Seguridad, validador y verificado), además, debido a su diseño
      se hace frente a vulnerabilidades anteriormente explotadas como
      desbordamiento de buffer o el acceso a la memoria a nivel de procesos.


  •   Rendimiento: el motor en tiempo de ejecución está diseñado para mejorar
      el rendimiento ya que el código administrado nunca se interpreta. Una
      característica denominada compilación JIT (Just-In-Time) permite ejecutar
      todo el código administrado en el lenguaje máquina nativo del sistema que
      se ejecuta. Otro aspecto relacionado con el rendimiento es que el
      administrador de memoria evita que la memoria se pueda fragmentar y
      aumenta la zona de referencia de la memoria para mejorar aún más el
      rendimiento.

  •   Documentación: la plataforma .NET ofrece mucha documentación de
      ayuda (herramientas, debuggers, editores) que se encuentra incluida en la
      IDE, además en la web se puede encontrar bastante información debido al
      éxito que ha tenido la plataforma.
  •   Facilidad de uso / Curva de aprendizaje: gracias a la documentación y
      soporte de ayuda .Net se vuelve fácil de usar, además, al ser multilenguaje
      es fácil para un usuario integrarse de manera rápida en de desarrollo de
      aplicaciones.

  •   Manejo de errores: mediante el motor de depuración que permite el
      seguimiento paso a paso y al administrador de excepciones el manejo de
      errores es tratable y fácil de manejar.


  •   Madurez / Robustez: la plataforma se ha consolidado hoy en día como una
      de las más importantes del mercado y su madurez llega a ser casi de una
      década, la robustez está dada por la biblioteca de clases y la misma
      composición de la plataforma.


  •   Escalabilidad: la plataforma permite diseñar aplicaciones donde la
      escalabilidad es imperante, por ejemplo hay métodos de carga balanceada
      para el trabajo de servidores clúster de tal manera que estos colaboren y
      funcionen como uno solo.



                                      24
GC TENIS UDEA                                                                 U. de A.
  VERSION 1 – RTF 3                                                       Seminario de
  ENFOQUE ARQUITECTONICO                                       Arquitectura de Software


     •    Interoperabilidad / Flexibilidad: al ser multilenguaje la plataforma permite
          la colaboración de gran cantidad de componentes escritos en los diferentes
          lenguajes; mediante la biblioteca de clases de permite la comunicación de
          manera correcta de dichos componentes.


     •    Licenciamiento: Microsoft y sus socios trataron de conseguir patentes para
          C# (lenguaje desarrollado para la plataforma) y el CLI pero por cuestiones
          de estándares (ECMA e ISO) se solicitó que era esencial que la
          implementación estuviera disponible bajo “términos no discriminatorios” y
          ahora las patentes están disponibles, sin embargo esto no ocurrió para el
          .NET Framework ya que hasta octubre de 2007 solo se liberó el código
          fuente de la biblioteca de clases de la plataforma. A la fecha es posible
          crear aplicaciones comerciales sin llegar a pagar algún costo pero depende
          de las herramientas que se utilizaron.

  La siguiente plataforma fue investigada por: Nelson Puerta

1.4 JEE




  Java Platform, Enterprise Edition o Java EE (anteriormente conocido como J2EE
  hasta la versión 1.4), es una plataforma para desarrollar y ejecutar software de
  aplicaciones en Lenguaje de programación Java con arquitectura de N capas
  distribuidas y que se apoya ampliamente en componentes de software modulares,
  ejecutándose sobre un servidor de aplicaciones. La plataforma Java EE está
  definida por una especificación, similar a otras especificaciones del Java
  CommunityProcess, Java EE es también considerada informalmente como un
  estándar debido a que los proveedores deben cumplir ciertos requisitos de
  conformidad para declarar que sus productos son conformes a Java
  EE; estandarizado por The Java CommunityProcess / JCP.


                                           25
GC TENIS UDEA                                                               U. de A.
VERSION 1 – RTF 3                                                     Seminario de
ENFOQUE ARQUITECTONICO                                     Arquitectura de Software



Java EE incluye varias especificaciones de API, tales como JDBC, RMI, e-
mail, JMS, Servicios Web, XML, etc y define cómo coordinarlos. Java EE también
configura algunas especificaciones únicas para Java EE para componentes estas
incluyenEnterprise JavaBeans, servlets, portlets (siguiendo la especificación de
Portlets Java), JavaServerPages y varias tecnologías de servicios web. Ello
permite al desarrollador crear una Aplicación de Empresa portable entre
plataformas y escalable, a la vez que integrable con tecnologías anteriores. Otros
beneficios añadidos son, por ejemplo, que el servidor de aplicaciones puede
manejar transacciones, la seguridad, escalabilidad, concurrencia y gestión de los
componentes desplegados, significando que los desarrolladores pueden
concentrarse más en la lógica de negocio de los componentes en lugar de en
tareas de mantenimiento de bajo nivel.




                              Figura 6 Capas de JEE




                                       26
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software


      1.4.1 Características a evaluar de la plataforma
JEE presenta diversas características que se van a mencionar brevemente a
continuación con lo que se

  •   Documentación:

         o Java Platform, Enterprise Edition (Java EE) Technical Documentation
           http://download.oracle.com/javaee/
         o Java Tips http://www.java-tips.org/java-ee-tips/

  •   Seguridad:      Aunque otros modelos de     aplicaciones    empresariales,
       requieren medidas de seguridad para una plataforma específica en cada
      aplicación, el entorno de seguridad JEE permite que los problemas de
      seguridad se determinen en el tiempo de implementación. La
      plataforma Java EE hace aplicaciones portátiles para una amplia variedad
      de implementaciones de seguridad, protegiendo a los desarrolladores
       de una    compleja    implementación     de     funciones de   seguridad.
      La plataforma Java EE proporciona reglas declarativas estándar de control
      de acceso que son definidos por el desarrollador e interpretado cuando se
      implementa la aplicación en el servidor. Java EE también proporciona
      mecanismos estándar de inicio de sesión para que los desarrolladores no
      tengan que emplear estos mecanismos en sus aplicaciones. Con JEE una
      misma aplicación funciona en una gran variedad de entornos de
      seguridad sin necesidad de cambiar el código fuente.

  •   Facilidad de uso: El proceso de instalación de JEE no es complejo, es
      bastante sencillo e intuitivo, ya que se puede descargar de la página oficial
      y seguir tranquilamente las instrucciones del wizzard.

  •   Internacionalización: mecanismos para el manejo de parámetros que
      permitan la internacionalización del portal.

  •   Manejo de errores: Las técnicas de manejos de errores que se
      implementan en JEE son las mismas que se hacen con java ya que al
      interior de la plataforma se trabaja con este lenguaje.

  •   Soporte a nuevos estándares de la Web 2.0 o Web 3.0. Web 2.0: Tiene
      características específicas que hacen difícil al elección de Java EE como
      implementación. Las aplicaciones utilizan las APIs para acceder a los
      servicios de otras mucho más que en las típicas aplicaciones de Web 1.0,
      inclinación por la interacción de tipo consumidor a consumidor (C2C), es



                                       27
GC TENIS UDEA                                                                    U. de A.
VERSION 1 – RTF 3                                                          Seminario de
ENFOQUE ARQUITECTONICO                                          Arquitectura de Software


       decir, el propietario sólo genera una pequeña parte del contenido de la
       aplicación; la mayor parte es generada por el usuario.
       SOA+B2C+Web 2.0 = Latencia muy alta
Las aplicaciones Web 2.0 utilizan frecuentemente servicios y feeds que están
atados a      la API del servicio SOA. Estas aplicaciones necesitan       consumir
servicios en un contexto B2C. Por ejemplo, una         aplicación puede mostrar
información sobre las condiciones        climáticas, información sobre el tráfico y
un mapa de carreteras, obteniendo cada información de un recurso distinto.
El tiempo de conseguir cada parte se añade al          tiempo global de procesar la
petición. Existen técnicas de cacheo que pueden aliviar la latencia, pero no son
aplicables en        todas las situaciones. No es práctico e impensable, por
ejemplo, cachear resultados de consultas o tráfico de         información que se
obtiene en tiempo real.
Por su propia naturaleza, la invocación de servicios es un proceso lento y con una
alta latencia que normalmente coloca sólo una pequeña porción               de      los
recursos de CPU en          el cliente y en el servidor. La    mayor parte de la
duración de la invocación de un servicio          se gasta en establecer la conexión
y en trasmitir los datos. Por lo tanto, mejorar el       rendimiento en el cliente o en
el lado del servidor generalmente es sólo         una pequeñareducción         en     la
duración de la llamada.
La latencia de las operaciones afecta más a las aplicaciones Java EE     que   el
throughput de cada operación. Incluso si el servicio de una       aplicación
puede manejar un gran volumen de operaciones, tiene la            misma latencia
e incluso puede incrementarse. El      conjunto de las     aplicaciones Java EE
no manejan bien está situación porque viola la suposición de que la latencia está
implícita en el diseño de estas APIs.


   •   Mecanismos de Licenciamiento: Evaluar el tipo de licencias, ventajas de
       tener software libre o propietario, interconexión con diferentes DBMS,
       utilización en empresas desarrolladoras de software.

   •   Interoperabilidad: La interoperabilidad en JEE se puede manejar con EJB
       que es un protocolo basado en Internet Inter-ORB Protocolo (IIOP/GIOP
       1.2), el protocolo CommonSecureInteroperabilityversion 2 (CSIv2).Es
       bastante robusto y permite manejar también seguridad y persistencia en
       caso de tener que lidiar con sistemas tipo legacy.



                                          28
GC TENIS UDEA                                                              U. de A.
VERSION 1 – RTF 3                                                    Seminario de
ENFOQUE ARQUITECTONICO                                    Arquitectura de Software


   •   Robustez: JEE se ha consolidado como una de las plataformas más
       importantes del mercado y su madurez llega a ser casi de al menos quince
       años, la robustez está dada por la biblioteca de clases y la misma
       composición de la plataforma. A demás de eso la metodología desarrollada
       por Sun conocida como SunTone 2 am permite desplegar al máximo las
       características de esta plataforma.




                           Figura 7 Características JEE
       1.4.2 GlassFish
¿Qué es GlassFish?
Es un servidor de aplicaciones de código abierto desarrollado por SUN
MICROSYSTEMS, que implementa las tecnologías definidas en la
plataforma Java EE y permite ejecutar aplicaciones que siguen esta
especificación. GlassFish está basado en el código fuente donado por Sun, que
proporcionó el módulo de persistencia TopLink. GlassFish tiene como base al
servidor Sun Java System Application Server de Oracle Corporation, un derivado
de Apache Tomcat, y que usa un componente adicional llamado Grizzly que usa
Java NIO para escalabilidad y velocidad. Además Soporta todo tipo de
plataformas, Linux, Windows, Solaris, Solaris_X86 y MacOS.




                                       29
GC TENIS UDEA                                                               U. de A.
VERSION 1 – RTF 3                                                     Seminario de
ENFOQUE ARQUITECTONICO                                     Arquitectura de Software




   •
                                 Figura 8 GlassFish
A continuación se presentara un conjunto de características en donde se compara
las dos versiones de Glassfish 2.1.1 y 3.0.1
Tabla de Comparación de GlassFish versión 2.1.1 y 3.0.1

Característica                        GlassFishversión      GlassFish versión
                                            2.1.x                 3.0.x
                                     versión 2.1.1 lanzada versión 3.0.1 Lanzada
Fecha de Lanzamiento                   en Octubre 2009         en Junio 2010
Soporte Comercial Disponible                                          X
                                                X

SailFin (Telco Application Server)              X

Java Plataform, Enterprise Edition

                                          Java EE 5            Java EE 6 [2]
Certificado con Java EE

                                        30
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software



Web Application
                                      Servlet 2.5JSP 2.1,    Servlet 3.0JSP 2.2,
Tecnologías Java Web                       JSF 1.2                 JSF 2.0
Metro Web Services Stack              Interoperabilidad con Interoperabilidad .NET
                                     .NET 3.0Web Services      3.5Web Services
Next Generation Web
jMaki (Ajax Framework)                        X[4]                   X[4]
Jersey / JAX-RS
                                          JAX-RS 1.0             JAX-RS 1.1

Administración

Admin Consola y CLI                            X                       X
(Administración Centralizada)

JMX                                            X                       X

Agente Nodo & Manejo de                        X
Clusters

Herramientas de Actualización                  X                       X

RESTful admin API
                                                                       X

Paquetes de Instalación con perfil                                   X [5]
WEB[5]
Monitoreo (btrace, dtrace)
                                                                       X

Cliente

Contenedores para Aplicaciones                 X                       X
tipo Cliente

Soporte de Java WebStart
                                               X                       X

Aplicaciones tipo Enterprise

Java DB, JDBC Pooling de               Java DB 10.4.2.1       Java DB 10.5.3.0
Connexiones


                                        31
GC TENIS UDEA                                                           U. de A.
VERSION 1 – RTF 3                                                 Seminario de
ENFOQUE ARQUITECTONICO                                 Arquitectura de Software



JTA 1.1/JTS 1.0                             X                     X

J2EE                                Conectores 1.5        Conectores 1.6

Enterprise JavaBeans (EJB)                EJB 3.0             EJB 3.1

JMS 1.1                                     X                     X

                                    JPA 1.0(TopLink)   JPA 2.0(EclipseLink)
Java Pertistence API (JPA)

Scripting

jRuby/Rails Web Archive (.war)              X                     X
deployment

jRuby “Nativo”/Rails deployment –                                 X
sin necesidad de un contenedor
Servlet

Ajuste dinamico de jRuby en                                       X
tiempo de ejecución

                                                                X [4]
Groovy/Grails

Early Jython/Django support                                     X [4]
Herramientas de Desarrollo
NetBeans IDE                               X[6]                 X[6]
Eclipse IDE
                                            X                     X

Centro de Actualizaciones                   X                     X

Centro de actualizaciones                                         X
integrado con una consola de
administración

Herramientas de Verificación                X


                                     32
GC TENIS UDEA                                                                 U. de A.
VERSION 1 – RTF 3                                                       Seminario de
ENFOQUE ARQUITECTONICO                                       Arquitectura de Software



Frameworks
                                                                     1.9.18
Grizzly (Java NIO)                           1.0.34

Comet (HTTP Push)                              X                         X

                                                                         X
CORBA                                          X

Arquitectura Modular basada en                                           X
OSGi

GlassFish Embedded                                                       X
Funcionalidades Extendidas de
GlassFish (Consola de                                                    X
Administracion, asadmin CLI utility,
etc)
Rendimiento
                                                                      X[3]
Clustering                                     X

Integración
                                               X
Integración con Identity Manager,
Access Manager (OpenSSO),
Registry Server, y Java Business
Integration (OpenESB)


[1]Soporte para Desarrolladores únicamente.
[2] GlassFish 3.0.1 Correrá aplicaciones Java Enterprise y Enterprise Edition 5.
[3] Soporte para clustering básico usando mod_jk.
[4] GlassFish posee un Update Center que permite la descarga de actualizaciones
a través de un entorno grafico llamado "updatetool", o a través de la consola de
administración GlassFish 3.
[5] GlassFish 3.0.1 posee cada uno de los perfiles web para Java EE. El
updatetool permite actualizar o mantener las características deseadas.
[6] Soportado en NetBeans 6.9.


                                        33
GC TENIS UDEA                                                                        U. de A.
   VERSION 1 – RTF 3                                                              Seminario de
   ENFOQUE ARQUITECTONICO                                              Arquitectura de Software




1.5 Valoración de las características

   Todas las características se evaluaran entre 0 y 5 siendo 0 la nota más baja. A
   continuación se describe las valoraciones de manera porcentual.




                          Figura 9 Valoración de las características




1.6 Calificación de cada Plataforma




                                             34
GC TENIS UDEA                                                                     U. de A.
   VERSION 1 – RTF 3                                                           Seminario de
   ENFOQUE ARQUITECTONICO                                           Arquitectura de Software




                        Figura 10 Calificación de cada plataforma




1.7 Computo de totales y selección de la mejor plataforma.




                      Figura 11 Calificación total de cada plataforma


   2 SELECCIÓN DEL FRAMEWORK.



                                            35
GC TENIS UDEA                                                                  U. de A.
VERSION 1 – RTF 3                                                        Seminario de
ENFOQUE ARQUITECTONICO                                        Arquitectura de Software


    2.1 ICEfaces.

El siguiente Framework fue investigado por: Santiago Agudelo Ibarra




ICEFaces: Es un framework de código abierto para construir aplicaciones web
con AJAX tipo RIA (Rich Internet Application). Permite al programador incluir una
serie de Ajax-tags en sus JSP o xhtml de tal manera que el código Ajax es
generado por el propio framework automáticamente.

ICEFaces aísla completamente al desarrollador de AJAX. No hacen falta etiquetas
especiales: se ponen los controles en la pantalla e ICEFaces se encarga de enviar
sólo la información necesaria entre cliente y servidor. Es decir, ya no se envían los
formularios a la antigua usanza, en un POST de HTTP, sino que sólo se envían
los cambios que ha hecho el usuario del cliente al servidor, y los cambios en la
pantalla del servidor al cliente. Además, con la inclusión de la librería
Scriptaculous en ICEFaces, se dispone de arrastrar + soltar y de efectos
(fundidos, parpadeos, apariciones) para los controles.

2.1.1 Características a evaluar del Framework.

Documentación:
documentos de todas las versiones en la página oficial:
http://www.icefaces.org/main/resources/.

Foros:
http://www.icefaces.org/JForum/forums/list.page

Demos de los componentes ICEfaces:
http://component-showcase.icefaces.org/component-showcase/showcase.iface

Seguridad:
ICEfaces es una de las soluciones Ajax más seguras del mercado. Es compatible
con SSL, previene los scripts de cross-site (es un tipo de inseguridad informática
o agujero de seguridad basado en la explotación de vulnerabilidades del sistema
de validación de HTML incrustado.), inyección de código malicioso. Es una
solución Ajax basada en servidor, la cual no utiliza datos de usuarios, además es
especialmente efectivo en la prevención de fallos en los submits de los formularios
y el ataque SQL por inyección.
                                         36
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software




Facilidad de uso:
La instalación de la aplicación se hace por medio de un plugin, el cual se puede
descargar gratuitamente en la página oficial del framework.
http://www.icefaces.org/main/downloads/os-downloads.iface?category=Stable
%20Releases,NetBeans.

Este plugin es agregado a la plataforma de la cual será utilizado de esta manera
fácil y sencilla puede instalarse y estar listo para usarcé en unos cuantos pasos.

Mensajes de error y validación: Suele ser una fuente de errores el que los
mensajes de validación o error desaparezcan debido a que esos campos no
tengan el atributo inmediate situado a true. Este problema es debido a que sólo se
hace submit de una parte del formulario. JSF permite que se modifiquen el texto
de los mensajes de error. A continuación se muestra cómo se hace:
   • Se indica la lista de mensajes que se pretenden reemplazar, por ejemplo
       para validar la longitud:

       javax.faces.validator.LengthValidator.MAXIMUM_MESSAGE_ID             =     Tu
       mensaje

   •   Por último sólo es necesario agregar en el faces-config.xml el bundle de los
       mensajes:

       <application>
       <message-bundle>com.yourcompany.resources</message-bundle>
       </application>

Internacionalización: La internacionalización es un requisito común de las
aplicaciones web modernas, y es fácil de lograr en JSF e ICEfaces. Idiomas
soportados se pueden especificar y cambiar dinámicamente por marcado de la
página o desde el servidor. Además JSF detectará automáticamente la
configuración regional de un navegador web cliente y aplicarlo si el proyecto está
configurado                                                        correctamente.


Tutorial de internacionalización:

http://translate.google.com.co/translate?hl=es&langpair=en|
es&u=http://wiki.icefaces.org/display/ICE/Internationalization%2Bin%2BICEfaces

La versión más estable lanzada por la empresa propietaria de ICEfaces (IceSoft)
es la versión 1.6 del framework. No obstante, ya se encuentra una nueva versión
ICEfaces con un conjunto de mejoras y arreglos (nuevo popup contextual, google

                                        37
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software


maps, soporte para funciones adicionales...) aunque actualmente se encuentra en
fase de pruebas y debe ser considerada no apta para su uso en producción.


Licenciamiento:

ICEfaces está bajo una licencia de código abierto Mozilla Public License (MPL).
Con el fin de usar e implementar la versión de código abierto de ICEfaces más
productiva, los desarrolladores y administradores de proyectos deben ser capaces
de / dispuestos a:

Soporte Estándares en la web:

Basado en estándares Java EE:

ICEfaces es el líder tecnológico en la integración de AJAX con la pila de JEE. Su
proveedor, ICEsoft, ofrece un amplio soporte para servidores de aplicaciones,
servidores de portal, e importantes marcos de código abierto. (usandoAJAX Push,
JSF, Facelets, Spring y JPA / Hibernate) sin necesidad de utilizar una línea de
código JavaScript. El libro tiene un enfoque especial en la tecnología Facelets que
es ahora una

MPL: Fue desarrollada originalmente por Netscape Communications
Corporation (una división de la empresa América Online), y más tarde su control
fue traspasado a la Fundación Mozilla.

El siguiente Framework fue investigado por: Jaime Alberto Flórez.

    2.2 Java Persistence API (JPA).




La plataforma Java EE 5 debe su éxito a la implementación de la tecnología
Enterprise JavaBeans (EJB), una tecnología para desarrollar componentes
empresariales de una aplicación Java llamados Enterprise Beans, los Enterprise
Beans proveen la lógica y representación de los datos para desarrollar

                                        38
GC TENIS UDEA                                                                 U. de A.
VERSION 1 – RTF 3                                                       Seminario de
ENFOQUE ARQUITECTONICO                                       Arquitectura de Software


operaciones especificas del negocio dentro de la aplicación, un Enterprise Bean
por ejemplo podría encargarse de desarrollar el “Carrito de Compras”, necesario
para realizar ventas online, realizando operaciones estándar que ahorran trabajo a
los desarrolladores de software y provee una gran simplificación del software, JPA
es una adición a la tecnología EJB encargándose de simplificar el modelo entidad
persistencia y añadiendo capacidades que no posea EJB; por tanto Java
Persistence API provee herramientas para estandarizar el mapeo objeto-relacional
(ORM) utilizado para la simplificación del acceso a una Base de datos relaciona
usando la programación basada en objetos.

JPA está basado en algunos de los mejores Frameworks y APIs, tales como;
Hibernate, Oracle TopLink y Java data Objects (JDO), también usa los objetos de
persistencia POJO para las bases de Datos Relacionales representando los datos
para acceder a las bases de datos como objetos de negocio (Objetos Java).

JPA usa algo llamado entidades lo cual representa una tabla de datos, una entidad
debe cumplir tres características, persistencia, identidad y soporte transaccional
(CRUD), JPA se basa en las anotaciones, así por ejemplo si queremos indicar que
una clase POJO es en verdad una entidad debemos hacer la anotación @entity
justo antes de nombrar la clase, las anotaciones indican al contenedor como
acceder a la base de datos, algunas anotaciones sirven para identificar qué tipo de
clave se posee, relaciones unos a muchos, control de acceso a las tablas y un sin
fin de medios para interactuar con la base de datos.

2.2.1 Características a evaluar del framework.

   •   Documentación:
       JPA posee documentación oficial y una gran comunidad de seguidores que
       generan tutoriales y ejemplos para el desarrollo de aplicaciones bajo la
       plataforma J2EE, podemos hallar un manual muy completo en la página
       oficial de Sun Java:

       http://java.sun.com/javaee/6/docs/tutorial/doc/bnbpz.html

       El cual además de describirnos el java Persistence API, nos da un tutorial
       completo de cómo usarlo.

   •   Seguridad:
       Permite hacer validaciones por medio de dos clases, JTA (Java Transición
       Api) que hace las validaciones automáticamente o Resource-Local donde el
       programador tiene que determinar cómo hacer las validaciones y determinar
       si debe hacerse una transacción (commit o rollback).

       Debido a que JPA trabaja con EJB puede trabajar en conjunto con el

                                        39
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software


      Servicio Java de Autenticación y Autorización (JAAS) permitiendo acceder a
      servicios de control de autorización y acceso, también está protegido contra
      datos corruptos y vulnerabilidades, además puede hacerse uso del JPA
      Security que provee soluciones de seguridad para las aplicaciones
      desarrolladas bajo Java con JPA , con el por ejemplo podrás configurar el
      control de acceso mediante anotaciones o XML y modificar el control
      basándose en roles.

  •   Facilidad de Uso:
      Además de JPA se encarga de abordar todos los inconvenientes que
      poseen los Enterprise Java Beans también tiene una serie de
      características que son demasiado sencillas en cuanto a su utilización, el
      manejo de anotaciones es una de ellas, así con tan solo una simple
      anotación podremos controlar numerosos aspectos de nuestra base de
      datos relacional, también tiene la facilidad de encapsular un gran conjunto
      de operaciones, hacer Join y subconsultas muy fácil y eficazmente.

  •   Internacionalización:
      La internacionalización es el aspecto de una aplicación de software para
      que pueda adaptarse a varios
      idiomas y regiones, en el desarrollo
      de aplicaciones web, este es un
      aspecto muy importante pues la
      World Wide Web, puede ser
      accesible desde cualquier lugar del
      mundo por cualquier persona a
      pesar de ello JPA no ha podido
      resolver el tema del lenguaje
      debido a que genera mensajes,
      enlaces        y       comentarios,
      específicamente en inglés.

  •   Manejo de Errores:
      Ya de por si Java tiene la
      capacidad de manejar errores
      eficazmente mediante sentencia try
      y catch, sin embargo mediante JPA
      también podemos manejar esta
      clase de situaciones con sentencias
      try y catch, esto se hace mediante
      el uso de una completa estructura,
      todas     las   excepciones    son
      detectadas por diversas partes de
      esta estructura y controladas

                                       40

                                                   Figura 12 Librerías de excepciones
GC TENIS UDEA                                                                 U. de A.
VERSION 1 – RTF 3                                                       Seminario de
ENFOQUE ARQUITECTONICO                                       Arquitectura de Software


       mediante IllegalArgumentExeption e IllegalStateException, también es
       controlada por algunas excepciones JPA incluidas en el paquete
       java.persistence.

   •   Mecanismos de Licenciamiento:
       Debido a que JPA es simplemente una especificación, posee un mecanismo
       de licenciamiento Freeware por lo que se posee de licencia ilimitada, pero
       sin la posibilidad de modificar el código fuente (no es opensource), muchos
       otros framework usan JPA y al mismo tiempo están bajo licencia libre
       algunos de ellos son Hibernate y EclipseLink.




    2.3 Hibernate

Este framework fue investigado por: Alejandro Suárez
                    HIBERNATE FRAMEWORK (JAVA)




Hibernate es un framework de Mapeo Objeto-Relacional (ORM) para la plataforma
Java que facilita el mapeo de una base de datos relacional a un modelo de
dominio de tipo orientado a objetos.

Hibernate permite el desarrollo de clases persistentes que asimilan las bondades
del paradigma de programación orientada a objetos (herencia, polimorfismo,
composición, etc.) y que son capaces de utilizar las librerías Java (debido a que el
lenguaje es Java), pero no sólo se ocupa de la asignación de las clases Java a
tablas de bases de datos (y de tipos de datos Java a tipos de datos SQL), sino
que también proporciona consulta y recuperación de estos, lo cual reduce


                                        41
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software


significativamente el tiempo de desarrollo al no tener que hacerlo de manera
                               manual.
                               De manera simple, la arquitectura tiene tres
                               componentes principales: un administrador de
                               conexiones, un administrador de transacciones y
                               el ORM, el primero administra de forma eficiente
                               la conexión a la base de datos (este proceso se
                               considera el que más gasta recurso debido a que
                               en se debe abrir y cerrar muchas veces la
                               conexión), el segundo permite el manejo de las
                               transacciones, incluso más de una a la vez y el
                               tercero se encarga de comunicar los dos modelos
                               (modelo de domino orientado a objetos y modelo
                               de bases de datos relaciones).

Figura 13 Arquitectura Hibernate   La imagen contigua muestra a un nivel alto de
                                   abstracción la arquitectura de Hibernate.

                               Los objetos de persistencias, comúnmente
                               llamados como POJO (Objeto Plain Old Java) son
                               instancias de clases que no extienden (heredan) y
                               no implementan nada en especial, sus atributos
                               son accesibles mediante métodos setter y getter.
Para poder asociar un POJO con su tabla en la base de datos Hibernate hace uso
de ficheros XML (con extensiones hbm.xml) los cuales permiten mapear la clase a
la base de datos al definir en ellos las propiedades del POJO y sus
correspondientes nombres de columna, asociación de tipos, referencias,
relaciones, etc.

Las características, datos de configuración y la manera en que la aplicación se
conecta a la base de datos se describen en el archivo de Hibernate.properties;
este archivo debe estar en el path de la aplicación.

Una de las características únicas de Hibernate es que no requiere que los
desarrolladores implementen interfaces propietarios o extiendan clases base
propietaria para poder persistir las clases. En vez de eso, Hibernate trata con la
reflexión de Java y el aumento de clases en tiempo de ejecución utilizando una
librería de generación de código Java muy poderosa y de alto rendimiento llamada


                                         42
GC TENIS UDEA                                                               U. de A.
VERSION 1 – RTF 3                                                     Seminario de
ENFOQUE ARQUITECTONICO                                     Arquitectura de Software


CGLIB. CGLIB se utiliza para extender clases Java e implementar interfaces Java
en tiempo de ejecución.

El concepto clave más importante dentro Hibernate es la clase Session la cual se
encarga de definir las operaciones relacionadas dentro del proceso de negocio,
delimitar una transacción y además prestar servicios adicionales (por ejemplo
cache que ahorra recursos al evitar abrir y cerrar conexiones con la bases de
datos nuevamente), una manera de entender su funcionalidad es compararla con
el concepto de conexión de JDBC solo que es más sencilla al tener métodos
diseñados para trata con objetos.

Es también lógico que tenga que existir una clase superior para crear sesiones y
realizar operaciones comunes a los diferentes threads (cada uno asociado a una
sesión) como lo es la gestión de la cache. A esta clase se le denomina
SessionFactory la cual está inspirada en el patrón de diseño que la denomina,
también es posible que la aplicación tenga más de una SessionFactory lo cual
cobra sentido si se está utilizando más de una base de datos.
Otros conceptos claves son los tipos de objetos que maneja Hibernate: transient y
persistent, los primeros son objetos que sólo existen en memoria y no en la base
de datos, estos objetos corresponden en su mayoría al estado de los objetos
antes de ser almacenados en el repositorio, es decir, antes de que existan,
aunque también hay objetos transient que nunca serán almacenados; los
segundos objetos corresponden a instancias que han sido creadas y almacenadas
en una sesión o bien devueltos en una consulta realizada con la sesión.

Hibernate proporciona además el HQL (Hibernate Query Language), un lenguaje
multimotor orientado a objetos con el que realizar consultas a la base de datos se
hace similar a SQL y es usado para obtener los objetos de la base de datos
según los criterios dados. El uso de HQL permite usar un lenguaje intermedio que
según la base de datos que usemos y el dialecto que especifiquemos será
traducido al SQL dependiente de cada base de datos de forma automática y
transparente.

Hibernate tiene la ventaja de que es totalmente transparente el uso de la base de
datos pudiendo cambiar de base de datos sin necesidad de cambiar una línea de
código de la aplicación, simplemente cambiando los ficheros de configuración de
Hibernate. Otros de los problemas que trata Hibernate son la granularidad, los
subtipos, la identidad, las asociaciones y la navegación de los datos.


                                       43
GC TENIS UDEA                                                                  U. de A.
VERSION 1 – RTF 3                                                        Seminario de
ENFOQUE ARQUITECTONICO                                        Arquitectura de Software


Hibernate es una herramienta ORM completa que ha conseguido en un tiempo
record una excelente reputación en la comunidad de desarrollo posicionándose
claramente como el producto OpenSource líder en este campo gracias a sus
prestaciones, buena documentación y estabilidad.
A la fecha Hibernate se encuentra en la versión 4.0


2.3.1   Caracteristicas a evaluar del Framework.

   •    Documentación: Hibernate cuenta con muy buena documentación, se
        pueden encontrar gran cantidad de foros, tutoriales e incluso libros que
        abordan de manera llana el uso del framework, además la comunidad de
        JBoss (a la cual se integró Hibernate)      cuenta con una completa
        información acerca de este.

   •    Seguridad: Hibernate implementa mecanismos de seguridad estableciendo
        limites en las transacciones y a partir de versión 3 la seguridad se gestiona
        de manera declarativa, cabe aclara que para entornos no gestionados la
        seguridad es la que establece los límites. Algo a considerar es que
        Hibernate no es tan invasivo con respecto a otras herramientas ORM (ya
        que es usa la reflexión de Java) lo cual no lo compromete a mayor grado
        con otras herramientas en caso en caso de infracciones de seguridad.


   •    Facilidad de uso: al comparar Hibernate con la manera de conectar los
        modelos de dominio orientado a objetos y modelos relacional, se reduce la
        complejidad al usar el framework, y si bien esta es una caracterices de la
        mayoría de herramientas ORM Hibernate saca una ligera ventaja de la
        otras herramientas ya que tiene su propio lenguaje “HQL” que lo hace
        multimotor de base de datos, este componente es uno de los atractivos de
        Hibernate al permitir de manera elegante y fácil realizar las transacciones s
        al base de datos. Por último Hibernate ya viene integrado al IDE de
        NetBeans por lo cual su proceso de instalación y configuración es muy
        sencillo.


   •    Internacionalización; este aspecto llega a estar cubierto por el JBoss
        Portal en su contendedor de portales a través del uso de recursos en los
        porlets.


                                         44
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software


   •   Manejo de errores: Hibernate cuenta con un manejador de excepciones lo
       cual permite detectar errores y solucionarlos de manera fácil y rápida,
       también es cierto que Hibernate no trata de corregir los errores en modo de
       ejecución pero esto tiene sentido si consideramos el riesgo al tener dos
       modelos integrados.


   •   Soporte a nuevos estándares: Hibernate se encuentra en evolución
       desde sus inicios y por su carácter OpenSource se ha popularizado, tanto
       que inspiro la especificación EJB 3 la cubre el área del estándar JDO, a la
       fecha hay conflicto entre estos dos estándares pero se debe a cuestiones
       de preeminencia.


   •   Mecanismo de licenciamiento: Hibernate es software libre, distribuido
       bajo los términos de la licencia GNU LGPL y mantiene la portabilidad entre
       todos los motores de bases de datos con un ligero incremento en el tiempo
       de ejecución.


El siguiente Framework fue investigado por: Nelson Puerta
   2.4 TOP LINK




Toplink construye aplicaciones de alto rendimiento que permiten persistencia de
los datos almacenándolos en una base de datos relacional. A su vez ejecuta
exitosas transformaciones de datos orientados a objetos en cualquier tipo de dato
relacional o elemento XML.

Arquitectura de ejecución de TOPLINK.


                                       45
GC TENIS UDEA                                                               U. de A.
VERSION 1 – RTF 3                                                     Seminario de
ENFOQUE ARQUITECTONICO                                     Arquitectura de Software




                          Figura 14 Arquitectura TOPLINK




La figura muestra como TopLink se ajusta en una arquitectura típica de JavaEE
compuesta por un servidor de aplicaciones. De esta forma TopLink, es un
contenedor opcional para JavaEE que a su vez es un source de datos.

Este framework está compuesto por un front-end de sesiones y un acceso a datos
del tipo back-end, esto permite hacer uso de mapeos, Query Frameworks, cache y
componentes de transacción. De esta manera las aplicaciones del cliente como
JSP, Servlet y Struts los cuales ingresan a través de la sesión la cual provee
accesos     al   query    framewok     y   al  componente     de   transacción.
Ambos componentes se benefician de la caché para reducir al mínimo los viajes a
las bases de datos.

Usando Toplink, se puede integrar a una aplicación persistencia y transformación
de objetos. Este framework también es adecuado para un vasto rango de
arquitecturas que a su vez se puede usar para diseñar, implementar, desplegar
y optimizar, la persistencia y transformación de objetos lo que permite soportar
una gran variedad de fuentes de datos y formatos, incluyendo los siguientes:

   •   Formato Relacional: Es comúnmente utilizado para la persistencia de las
       transacciones de los objetos a una base de datos relacional. Se


                                       46
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software


       puede acceder haciendo uso de los drivers de Java Database Connectivity
       (JDBC).

   •   Formato para los tipos de datos Objeto relacional: Es utilizado para
       manejar la persistencia de las transacciones, de los objetos que tienen
       como propósito especial, representaciones estructuradas del origen de los
       datos, optimizando el almacenamiento en una base de datos. Estos objetos
       pueden ser accedidos a través de una Oracle Database.

   •   Enterprise Information System(EIS): Es utilizado comúnmente para
       manejar la persistencia de las transacciones de objetos a una fuente de
       datos no relacionales, se pueden acceder mediante una aplicación
       Java EE conocida como Connector Architecture (JCA). Toplink también
       puede manejar       cualquier tipo de registro soportado por EIS,
       incluyendo indexado, mapeo, o XML.

   •    XML: Es frecuentemente utilizado, para manejar la conversión entre los
       objetos y   documentos de      esquemas      XML (XSD)      a     base
       de documentos XML, utilizando la arquitectura Java para la vinculación
       XML (JAXB).

Toplink soporta EJB 2.n y EJB 3.0 para los entornos Java EE y Java SE incluye a
su vez la integración con una amplia variedad de servidores de aplicaciones, como
lo son Oracle WebLogic Server, OC4J, SunAS, JBoss e IBM WebSphere
application server.

Un amplio conjunto de herramientas de desarrollo que provee toplink, incluyendo
Oracle JDeveloper TopLink Editor, Eclipse Dali y Oracle TopLink Workbench,
permite capturar y definir rápidamente, un objeto a una fuente de datos y un objeto
a una representación de datos, con mapeos en un formato de metadatos flexible y
eficiente. A su vez en tiempo de ejecución, permite a la aplicación explotar el
mapeo de metadatos, con una simple sesión tipo facade, que provee un profundo
respaldo al acceso de los datos, consultas, transacciones (con o sin un
controlador de transacción externa) y caching.




                                        47
GC TENIS UDEA                                                               U. de A.
VERSION 1 – RTF 3                                                     Seminario de
ENFOQUE ARQUITECTONICO                                     Arquitectura de Software




                           Figura 15 Esquema TOPLINK
Toplink en síntesis es un subconjunto gratuito de software java de acceso a datos
de Oracle. Dicha empresa le añadió varias capas de abstracción para hacerlo
compatible con JPA.

Toplink la cual fue donada por Oracle para a la comunidad de Eclipse en el 2007,
lleva mucho tiempo funcionando, no como implementación JPA, sino como capa
de acceso a datos. Oracle añadió capas para que fuera accesible vía JPA,
exactamente igual que hicieron los de Hibernate. Por lo tanto, TopLink aún tiene
que madurar más si se compara con Hibernate.




                                    Figura 16


Toplink no posee el mejor rendimiento ya que la memoria ocupada aumenta
dramáticamente, poniendo en evidencia que hay algún tipo de memory leak (fuga
de memoria) que no posee control alguno. En concreto, el máximo de memoria
utilizada (60 mb) triplica al utilizado por Hibernate

                                       48
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software




La memoria ocupada, aun después de forzar el recolector de basura (GC), puede
quedar hasta en 43 mb, lo cual casi triplica la ocupada por Hibernate (13 o 15 mb).
Los tiempos de respuesta, por otro lado, fueron el doble que los de Hibernate.

2.4.1 Características a evaluar del Framework

   •   Documentación: La documentación referente a la definición de los
       elementos que contiene el Framework no es mucha, comparado con otros
       Framework pero igual dispone de una buena documentación la cual se
       define muchos de sus elementos más relevantes.


   •   Seguridad: En cuanto a la seguridad esta depende e parte de los medios
       físicos con los servidores los cuales pueden ser afectados físicamente, pero
       también a elementos como ataques la base de datos mediante el uso SQL
       Injection, trabajar Backdoor en el servidor, manipulación de parámetros con
       en elementos del browser, etc.

       Otros riesgos de seguridad están asociados directamente con el aplicativo
       y el manejo de este como la bidireccional de mantenimiento automático de
       Top link del otro extremo de una relación, cuando uno de los extremos es
       manipulado, que forma parte de las especificaciones de EJB 2.0) suena
       como una muy buena idea, pero su aplicación parece inestable y el apoyo a
       esta función desde el equipo de desarrollo parece estar lejos de ser seguro


   •   Facilidad de uso: Facilita el mapeo de atributos entre una base de datos
       relacional y el modelo de objetos de una aplicación, mediante archivos
       declarativos (XML) que permiten establecer estas relaciones.

       Top link Proporciona una Interfaz web amigable y de fácil manejo.

       Top link permite una consulta de fácil lectura además es muy fácil de
       construir diversas expresiones de consulta independientes que luego se
       combinan en una sola consulta.




                                        49
GC TENIS UDEA                                                                U. de A.
VERSION 1 – RTF 3                                                      Seminario de
ENFOQUE ARQUITECTONICO                                      Arquitectura de Software


   •   Internacionalización: La internacionalización de top link en la actualidad
       es buena aunque no sea muy conocido y so sea tan reconocido como
       hibérnate.


   •   Manejo de errores: Uno delos errores que se presentan en este
       Framework es un error de traducción cuando intenta traducir las consultas
       en JPQL Filtros en una consulta orientada en la red


       Otros de los errores que tiene Top link es que este no es consciente de los
       cambios realizados en los datos de la base de datos, no hay actualización
       automática o función, como refresco después de insertar o actualizar para
       que conteste automáticamente los cambios en los datos de las acciones de
       activación en el interior del RDBMS.


   •   Soporte a nuevos estándares: Toplink es en gran medida maneja
       estándares relacionados a SQL, como el establecimiento de la propiedad
       de una 'base de datos de SQL Server Native'.

       Toplink cuenta con el apoyo de la mayoría de bases de datos relacionales y
       también almacenes de datos XML. Al parecer, el desarrollo de una ligera
       preferencia por el RDBMS de Oracle en el sentido de que las nuevas
       características de base de datos Oracle tienen una mejor oportunidad de
       ser apoyado por Toplink de las nuevas características de otros RDBMS.

       Soporte a estándares JAVA SERVER PAGES (JSP) a demás de trabajar
       en varios entornos de Desarrollo IDE como NetBeans, Eclipse, Oracle ADF.


   •   Mecanismo de licenciamiento: Se puede obtener una licencia como un
       producto     independiente    o    como   parte   de Oracle  Application
       Server Enterprise Edition el cual se basa en estándares J2EE servidor de
       aplicaciones que se pueden utilizar para implementar aplicaciones. Es
       comúnmente usado para desplegar Java aplicaciones, pero también se
       puede utilizar para implementar PL / SQL.

Actualmente se puede obtener una versión del Oracle Top Link 11g mejora su
objeto-XML Compatibilidad con enlaces a través de la inclusión de componentes
de MOXY EclipseLink. MOXY ofrece JAXB y SDO, así como muchas extensiones

                                       50
GC TENIS UDEA                                                                        U. de A.
VERSION 1 – RTF 3                                                              Seminario de
ENFOQUE ARQUITECTONICO                                              Arquitectura de Software


y funciones avanzadas de mapeo.

    2.5 Valoración de las características

Todas las características se evaluaran entre 0 y 5 siendo 0 la nota más baja. A
continuación se describe las valoraciones de manera porcentual.




                      Figura 17 Valoración de las características



    2.6 Calificación de cada Framework.




                      Figura 18 Calificación de cada Framework




                                          51
GC TENIS UDEA                                                                 U. de A.
VERSION 1 – RTF 3                                                       Seminario de
ENFOQUE ARQUITECTONICO                                       Arquitectura de Software


   2.7 Computo de totales y selección del mejor Framework.




                   Figura 19 Calificación total cada Framework


3 PRUEBAS DE CONCEPTO DEL FRAMEWORK



   3.1 Arquitectura del Framework (Explicación y diagrama)

     A continuación se complementa la información especificada en la
     evaluación del framework sobre Hibernate con respecto a su arquitectura.
     La siguiente Figura muestra los roles de las interfaces Hibernate más
     importantes en las capas de persistencia y de negocio de una aplicación
     J2EE. La capa de negocio está situada sobre la capa de persistencia, ya
     que la capa de negocio actúa como un cliente de la capa de persistencia.




                                       52
GC TENIS UDEA                                                                      U. de A.
VERSION 1 – RTF 3                                                            Seminario de
ENFOQUE ARQUITECTONICO                                            Arquitectura de Software




     Figura 20 Vista de alto nivel del API de Hibernate en una arquitectura por Capas


Las interfaces mostradas pueden clasificarse como sigue:

• Interfaces llamadas por la aplicación para realizar operaciones básicas
(inserciones,.borrados, consultas,...): Session, Transaction, y Query.
• Interfaces llamadas por el código de la infraestructura de la aplicación para
configurar Hibernate. La más importante es la clase Configuration.
• Interfaces callback que permiten a la aplicación reaccionar ante determinados
eventos que ocurren dentro de la aplicación, tales como Interceptor, Lifecycle, y
Validatable.
• Interfaces que permiten extender las funcionalidades de mapeado de Hibernate,
como por ejemplo UserType, CompositeUserType, e IdentifierGenerator.

Además, Hibernate hace uso de APIs de Java, tales como JDBC, JTA (Java
Transaction Api) y JNDI (Java Naming Directory Interface).


Se explicaran algunas de las interfaces mencionadas:


• La interfaz Session es una de las interfaces primarias en cualquier aplicación
Hibernate.


                                           53
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3
Rtf3

Más contenido relacionado

Destacado (20)

PU Alumnus Deans Bible2.1
PU Alumnus Deans Bible2.1PU Alumnus Deans Bible2.1
PU Alumnus Deans Bible2.1
 
The Top Productos
The Top ProductosThe Top Productos
The Top Productos
 
TRABAJAR ES SONREIRLE AL FUTURO
TRABAJAR ES SONREIRLE AL FUTUROTRABAJAR ES SONREIRLE AL FUTURO
TRABAJAR ES SONREIRLE AL FUTURO
 
Bullying: A resource for parents
Bullying: A resource for parentsBullying: A resource for parents
Bullying: A resource for parents
 
Conceptos 10
Conceptos 10Conceptos 10
Conceptos 10
 
ADSL
ADSLADSL
ADSL
 
TMD Technologies In focus 33
TMD Technologies In focus 33TMD Technologies In focus 33
TMD Technologies In focus 33
 
K. Kathleen O'Neill LoR PC 2012
K. Kathleen O'Neill LoR PC 2012K. Kathleen O'Neill LoR PC 2012
K. Kathleen O'Neill LoR PC 2012
 
MOBAC Future Technologies Workshop - Libraries
MOBAC Future Technologies Workshop - LibrariesMOBAC Future Technologies Workshop - Libraries
MOBAC Future Technologies Workshop - Libraries
 
Agency Profile
Agency ProfileAgency Profile
Agency Profile
 
Presentación vendiendo con pinterest .. llegar el último y ponerse en cabeza
Presentación   vendiendo con pinterest .. llegar el último y ponerse en cabezaPresentación   vendiendo con pinterest .. llegar el último y ponerse en cabeza
Presentación vendiendo con pinterest .. llegar el último y ponerse en cabeza
 
Module - Master thesis
Module - Master thesisModule - Master thesis
Module - Master thesis
 
Pastos
PastosPastos
Pastos
 
Los pronombres
Los pronombres Los pronombres
Los pronombres
 
Perfil estados unidos
Perfil estados unidosPerfil estados unidos
Perfil estados unidos
 
resume
resumeresume
resume
 
AEO nº17
AEO nº17AEO nº17
AEO nº17
 
150 do follow forum profile
150 do follow forum profile150 do follow forum profile
150 do follow forum profile
 
Software Engineering
Software Engineering Software Engineering
Software Engineering
 
áLamo blanco
áLamo blancoáLamo blanco
áLamo blanco
 

Similar a Rtf3

ANALISIS Y DISEÑO DE ESTRUCTURAS CON SAP 2000, EDITORIAL MACRO.pdf
ANALISIS Y DISEÑO DE ESTRUCTURAS CON SAP 2000, EDITORIAL MACRO.pdfANALISIS Y DISEÑO DE ESTRUCTURAS CON SAP 2000, EDITORIAL MACRO.pdf
ANALISIS Y DISEÑO DE ESTRUCTURAS CON SAP 2000, EDITORIAL MACRO.pdfKarlvonTerzaghi1
 
95870560 analisis-y-diseo-de-edificios-asistido-por-as
95870560 analisis-y-diseo-de-edificios-asistido-por-as95870560 analisis-y-diseo-de-edificios-asistido-por-as
95870560 analisis-y-diseo-de-edificios-asistido-por-asbenji_772
 
Analisis y diseã‘o de edificios asistido por computadoras
Analisis y diseã‘o de edificios asistido por computadorasAnalisis y diseã‘o de edificios asistido por computadoras
Analisis y diseã‘o de edificios asistido por computadorasingdeath
 
Documento arquitectura de software
Documento arquitectura de softwareDocumento arquitectura de software
Documento arquitectura de softwareAURA SYSTEMS S.A.C
 
Metodologia analisis
Metodologia analisisMetodologia analisis
Metodologia analisisVictor Varela
 
Metodologia analisis
Metodologia analisisMetodologia analisis
Metodologia analisisVictor Varela
 
Pfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesPfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesguofee
 
Pfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesPfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesguofee
 
Guía práctica de ANTLR 2.7.2
Guía práctica de ANTLR 2.7.2Guía práctica de ANTLR 2.7.2
Guía práctica de ANTLR 2.7.2LAUNASA NOVENO B
 
d422-guia-para-el-desarrollo-de-gadgets-v10
d422-guia-para-el-desarrollo-de-gadgets-v10d422-guia-para-el-desarrollo-de-gadgets-v10
d422-guia-para-el-desarrollo-de-gadgets-v10tutorialsruby
 
d422-guia-para-el-desarrollo-de-gadgets-v10
d422-guia-para-el-desarrollo-de-gadgets-v10d422-guia-para-el-desarrollo-de-gadgets-v10
d422-guia-para-el-desarrollo-de-gadgets-v10tutorialsruby
 
MANUAL DE LENGUAJE C
MANUAL DE LENGUAJE CMANUAL DE LENGUAJE C
MANUAL DE LENGUAJE Cclaudiocj7
 
Octave calculo numerico
Octave calculo numericoOctave calculo numerico
Octave calculo numericoLUIS COAQUIRA
 
SISTEMA DE REGISTRO DE ALUMNOS Y EQUIPOS FINAL
SISTEMA DE REGISTRO DE ALUMNOS Y EQUIPOS FINALSISTEMA DE REGISTRO DE ALUMNOS Y EQUIPOS FINAL
SISTEMA DE REGISTRO DE ALUMNOS Y EQUIPOS FINALFrancisco Gonzalez Aguilar
 

Similar a Rtf3 (20)

ANALISIS Y DISEÑO DE ESTRUCTURAS CON SAP 2000, EDITORIAL MACRO.pdf
ANALISIS Y DISEÑO DE ESTRUCTURAS CON SAP 2000, EDITORIAL MACRO.pdfANALISIS Y DISEÑO DE ESTRUCTURAS CON SAP 2000, EDITORIAL MACRO.pdf
ANALISIS Y DISEÑO DE ESTRUCTURAS CON SAP 2000, EDITORIAL MACRO.pdf
 
95870560 analisis-y-diseo-de-edificios-asistido-por-as
95870560 analisis-y-diseo-de-edificios-asistido-por-as95870560 analisis-y-diseo-de-edificios-asistido-por-as
95870560 analisis-y-diseo-de-edificios-asistido-por-as
 
Analisis y diseã‘o de edificios asistido por computadoras
Analisis y diseã‘o de edificios asistido por computadorasAnalisis y diseã‘o de edificios asistido por computadoras
Analisis y diseã‘o de edificios asistido por computadoras
 
Urd 1.6
Urd 1.6Urd 1.6
Urd 1.6
 
Documento arquitectura de software
Documento arquitectura de softwareDocumento arquitectura de software
Documento arquitectura de software
 
Guia analisis-de-algoritmos
Guia analisis-de-algoritmosGuia analisis-de-algoritmos
Guia analisis-de-algoritmos
 
Gretl guide-es[1]
Gretl guide-es[1]Gretl guide-es[1]
Gretl guide-es[1]
 
Fases y procesos de metodología xp
Fases y procesos de metodología xpFases y procesos de metodología xp
Fases y procesos de metodología xp
 
Metodologia analisis
Metodologia analisisMetodologia analisis
Metodologia analisis
 
Metodologia analisis
Metodologia analisisMetodologia analisis
Metodologia analisis
 
Pfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesPfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionales
 
Pfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesPfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionales
 
Guía práctica de ANTLR 2.7.2
Guía práctica de ANTLR 2.7.2Guía práctica de ANTLR 2.7.2
Guía práctica de ANTLR 2.7.2
 
Manual r 1
Manual r 1Manual r 1
Manual r 1
 
d422-guia-para-el-desarrollo-de-gadgets-v10
d422-guia-para-el-desarrollo-de-gadgets-v10d422-guia-para-el-desarrollo-de-gadgets-v10
d422-guia-para-el-desarrollo-de-gadgets-v10
 
d422-guia-para-el-desarrollo-de-gadgets-v10
d422-guia-para-el-desarrollo-de-gadgets-v10d422-guia-para-el-desarrollo-de-gadgets-v10
d422-guia-para-el-desarrollo-de-gadgets-v10
 
MANUAL DE LENGUAJE C
MANUAL DE LENGUAJE CMANUAL DE LENGUAJE C
MANUAL DE LENGUAJE C
 
Tfm javier eduardo_carrillo_plaza
Tfm javier eduardo_carrillo_plazaTfm javier eduardo_carrillo_plaza
Tfm javier eduardo_carrillo_plaza
 
Octave calculo numerico
Octave calculo numericoOctave calculo numerico
Octave calculo numerico
 
SISTEMA DE REGISTRO DE ALUMNOS Y EQUIPOS FINAL
SISTEMA DE REGISTRO DE ALUMNOS Y EQUIPOS FINALSISTEMA DE REGISTRO DE ALUMNOS Y EQUIPOS FINAL
SISTEMA DE REGISTRO DE ALUMNOS Y EQUIPOS FINAL
 

Rtf3

  • 1. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software Gestión de Canchas de préstamo de tenis de la Universidad de Antioquia Código: GC Tenis UdeA Número: 20121- 3 Equipo de Trabajo Asesor Juan Bernardo Quintero Integrantes Santiago Agudelo Ibarra Alejandro Suárez Jaime Alberto Flórez Nelson Puerta
  • 2. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software Historia Versión Fecha Descripción o Cambios introducidos 1.1 24/07/2012 Investigación de las plataformas 1.2 26/07/2012 Selección de la plataforma 1.3 28/07/2012 Investigación de los Frameworks 1.4 1/08/2012 Selección del Framework 1.5 4/08/2012 Arquitectura del Framework 1.6 13/08/2012 Montaje de la aplicación e implementación 1.7 14/08/2012 Implementación Roles Nombre del Rol Numerales Asignados Nombre del Estudiante Arquitecto 1 1,2 Nelson Puerta Arquitecto 2 1,2 Jaime Alberto Flórez Arquitecto 3 e 1,2,3 Alejandro Suárez Implementador Arquitecto 4 e 1,2,3 Santiago Agudelo Ibarra Implementador 2
  • 3. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software 1. TABLA DE CONTENIDO Pág. 1.SELECCIÓN DE LA PLATAFORMA...................................................................... 6 1.1.Ruby On Rails......................................................................................................6 1.1.1.Características a evaluar de la plataforma.......................................................7 1.2 Plataforma basada en PHP, LAMP................................................................... 12 1.2.1Características a evaluar de la plataforma......................................................14 1.3 Plataforma .NET (ASP/ASPX.NET)...................................................................18 1.3.1Características a evaluar de la plataforma......................................................23 1.4 JEE.....................................................................................................................25 1.4.1Características a evaluar de la plataforma......................................................27 1.4.2GlassFish......................................................................................................... 29 1.5 Valoración de las características.......................................................................34 1.6 Calificación de cada Plataforma........................................................................34 1.7 Computo de totales y selección de la mejor plataforma. ...................................35 2SELECCIÓN DEL FRAMEWORK.........................................................................35 2.1ICEfaces..............................................................................................................36 2.1.1Características a evaluar del Framework. .......................................................36 2.2 Java Persistence API (JPA)...............................................................................38 2.2.1Características a evaluar del framework. ........................................................39 2.3Hibernate.............................................................................................................41 2.3.1 Caracteristicas a evaluar del Framework....................................................... 44 2.4 TOP LINK..........................................................................................................45 2.4.1Características a evaluar del Framework........................................................49 2.5Valoración de las características........................................................................51 2.6 Calificación de cada Framework........................................................................51 2.7 Computo de totales y selección del mejor Framework. .....................................52 3
  • 4. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software 2. LISTA DE FIGURAS Pág. Figura 1 Ejemplo de codificación en Ruby................................................................7 Figura 2 Flujo de datos en PHP...............................................................................13 Figura 3 Common Language Runtime (CLR)..........................................................19 Figura 4 Biblioteca de clases .NET..........................................................................22 Figura 5 Flujo de datos en .NET..............................................................................23 Figura 6 Capas de JEE............................................................................................26 Figura 7 Características JEE...................................................................................29 Figura 8 GlassFish...................................................................................................30 Figura 9 Valoración de las características...............................................................34 Figura 10 Calificación de cada plataforma..............................................................35 Figura 11 Calificación total de cada plataforma......................................................35 Figura 12 Librerías de excepciones.........................................................................40 Figura 13 Arquitectura Hibernate.............................................................................42 Figura 14 Arquitectura TOPLINK.............................................................................46 Figura 15 Esquema TOPLINK.................................................................................48 Figura 16..................................................................................................................48 Figura 17 Valoración de las características.............................................................51 Figura 18 Calificación de cada Framework.............................................................51 Figura 19 Calificación total cada Framework..........................................................52 Figura 20 Vista de alto nivel del API de Hibernate en una arquitectura por Capas 53 Figura 21 Instalación complemento de Hibernate...................................................55 Figura 22 Crear aplicación WEB.............................................................................56 Figura 23 Servidor GlassFish..................................................................................56 Figura 24 Configuración del documento hibernate.cfg.xml.....................................57 Figura 25 Ingenieria inversa de Hibernate..............................................................58 Figura 26..................................................................................................................59 4
  • 5. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software Figura 27 Mapeo objetos Hibernate........................................................................59 Figura 28..................................................................................................................59 Figura 29 Generar el código de los POJOS............................................................60 Figura 30 Crear archivo HibernateUtil.java.............................................................61 5
  • 6. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software 1. SELECCIÓN DE LA PLATAFORMA 1.1. Ruby On Rails La siguiente plataforma fue investigada por: Santiago Agudelo Ibarra Ruby On Rails Descripción: Ruby on Rails fue escrito por David Heinemeier Hansson a partir de su trabajo en Basecamp, una herramienta de gestión de proyectos, por 37signals. Fue liberado al público por primera vez en Julio de 2004. Ruby on Rails: es un entorno de desarrollo web de código abierto que está optimizado para satisfacción de los programadores y de la productividad. Te permite escribir un buen código favoreciendo la convención antes que la configuración. Ruby: es un lenguaje con un balance cuidado. Su creador, Yukihiro “matz” Matsumoto, mezcló partes de sus lenguajes favoritos (Perl, Smalltalk, Eiffel, Ada, y Lisp) para formar un nuevo lenguaje que incorporara tanto la programación funcional como la programación imperativa. Rails: es un framework de desarrollo de aplicación web escrita en lenguaje Ruby. Está diseñado para hacer programación de aplicaciones web más fácil al hacer suposiciones sobre lo que todo desarrollador necesita para comenzar y te permite escribir menos código. Rails es firme; esto hace la suposición que hay una “mejor” manera de hacer las cosas, y está diseñando para estimular de esa manera. Si puede aprender de “The Rails way” probablemente se descubrirá un gran incremento en la productividad. 6
  • 7. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software La filosofía de Rails: • “No Repeat Yourself” – esto sugiere que escribir el código una y otra vez es malo. • Convención sobre configuración - significa que Rails hace suposiciones sobre lo que quieres hacer y cómo lo vamos a hacer, en lugar de pedirle que especifique cada pequeña cosa a través de los archivos de configuración sin fin. • El Orden es el mejor patrón para las aplicaciones web - la organización de su aplicación en torno a los recursos y verbos HTTP estándar es la forma más rápida de llegar a tu objetivo. 1.1.1. Características a evaluar de la plataforma • Documentación La documentación de Ruby on Rails principalmente esta en inglés, en su página oficial se puede encontrar desde sus principales características hasta una descripción más detallada de todo su entorno de desarrollado. Ejemplo: este es la suma del número 5 con el numero 6 el cual es asignado a la variable y. Figura 1 Ejemplo de codificación en Ruby La comunidad de desarrollo es amplia de la cual hay tres principales componentes los cuales son: Wiki El wiki Reils: es el sitio perfecto para las contribuciones de los usuarios a la documentación Listas de correo 7
  • 8. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software Donde los usuarios de Rails vienen a pedir ayuda, anunciar proyectos, y discutir todo tipo de asuntos que envuelven al entorno y a la comunidad. Planeta Rails Se han creado multitud de blogs donde hablan y escriben mini tutoriales de Ruby on Rails. Para agrupar a todos, se ha creado Planeta Rails. Página oficial: http://rubyonrails.org/ • Seguridad Manejo de usuarios: Existe un plugin para Ruby on Rails llamado Acts As Authenticated que nos ahorra la siempre repetitiva tarea de la autenticación (login) de usuarios en RoR, crea el modelo para el usuario, el controlador y las vistas para realizar login, logout, comprobar si el usuario esta autenticado, etc … Mecanismos de personalización de menús para la adecuada implementación de roles Posee soporte para múltiples proyectos, flexibilidad en el manejo de roles, sistema de seguimiento, diagrama de Gantt y calendario, noticias. Llama la atención por la posibilidad de crear Wikis y foros por proyecto. • Facilidad de uso: Para usuarios de Debian o Ubuntu: sudo apt-get install ruby irb rdoc Versión Windows Descargas el ruby desde la página oficial: Rubyonrails.org Siguiente> Siguiente> Aceptar> No >deseo registrarme luego. Muy bien hasta aquí ya tenemos instalado Ruby. Los archivos deberán ser descargados en un sólo directorio y los comandos ejecutados en ese directorio. Si disponemos de conexión a internet el trabajo se resumen en: gem install rails –include-dependencies. Para una instalación manual debemos descargarnos cada uno de los módulos:  gem install rake-0.7.1.gem  gem install activesupport-1.3.1  gem install activerecord-1.14.4.gem 8
  • 9. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software  gem install actionpack-1.12.5.gem  gem install actionmailer-1.2.5.gem  gem install actionwebservice-1.1.6.gem  gem install rails-1.1.6.gem Actualizaciones: Esta también es hecha en la misma página oficial la cual tiene un link que dice “Add-ons” el cual permite hacer las actualizaciones correspondientes... • Manejo de errores: En Ruby on Rails, el tratamiento de excepciones se encapsula entre cláusulasbegin y end de la siguiente forma: 1. begin 2. # codigo... 3. rescue TIPO_EXCEPCION_1 4. STDERR.puts "Ha ocurrido un problema de tipo 1" 5. rescue TIPO_EXCEPCION_2 6. STDERR.puts "Ha ocurrido un problema de tipo 2" 7. else 8. STDERR.puts "Ha ocurrido otro problema" 9. ensure 10. # se ejecuta siempre haya o no excepción 11. end Tipos de excepciones A continuación mostramos los tipos de excepciones de Ruby: • Exception o fatal o NoMemoryError o ScriptError  LoadError  NotImplementedError  SyntaxError o SignalException  Interrupt o StandardError  ArgumentError 9
  • 10. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software  IOError  EOFError  IndexError  LocalJumpError  NameError  NoMethodError  RangeError  FloatDomainError  RegexpError  RuntimeError  SecurityError  SystemCallError  Errorno::__ (ENOENT, etc.) (system-dependent)  ThreadError  TypeError  ZeroDivisionError o SystemExit o SystemStackError Lanzar excepciones Podemos lanzar excepciones propias usando la palabra raise: 1. def metodo_que_lanza_excepcion 2. raise "error 1" 3. end 4. metodo_que_lanza_excepcion rescue puts $! El código anterior definimos un método y luego fuera de este método definimos qué pasará cuando se lance la excepción. En este ejemplo imprimimos con el comando puts el mensaje que se pasa por parámetro: "error • Soporte a nuevos estándares de la Web : Web 2.0 Permite crear aplicaciones web más interactivas y fluidas, transformando la web tradicional en aplicaciones más parecidas a las que un usuario podría esperar en su escritorio. Ruby on Rails se basa en la tecnología Web 2.0 y por lo tanto se puede enlazar fácilmente. Además, las aplicaciones web responden a las acciones del visitante 10
  • 11. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software sin tener que cargar toda la página web de nuevo, son una parte fundamental del éxito de una página web. Funciones web 2.0 que incluyen la implementación de técnicas relacionadas con Ajax y el desarrollo de los efectos visuales están a disposición del programador. Web 3.0 Los usuarios pueden conseguir un cambio drástico en la apariencia y la sensación de aplicaciones web e incluso en presencia de toda Internet. Adobe ® Flex ™ 2 es una solución de desarrollo de aplicaciones para crear y entregar aplicaciones con potencial para la web 3.0 • Mecanismos de Licenciamiento: Rails está liberado bajo la licencia MIT. Ruby bajo la licencia Ruby "Rails", "Ruby on Rails", y el logo de Rails son marcas registradas de David Heinemeier Hansson. Licencia MIT: Se concede permiso, de forma gratuita, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados Licencia Ruby: Rubí tiene derechos de autor de software libre por Yukihiro Matsumoto. Robustez: Carece de total robustez, con el solo hecho de permitirse redefinir un método 100 veces en una misma clase. También porque me permite reabrir las clases para seguir añadiendo métodos. En cuanto a Rails tiene una arquitectura 2 capas en la que las clases y no existe una capa de persistencia separada. Escalabilidad: es escalable porque no solo se centra en problemas comunes a su plataforma si no en muchas otras que se basa en el paradigma de convención frente a configuración, la compañía refuerza esa idea de que realmente RoR escala, pero que es cuestión de ir madurando la plataforma y que aparezcan más soluciones. 11
  • 12. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software La siguiente plataforma fue investigada por: Jaime Alberto Flórez. 1.2 Plataforma basada en PHP, LAMP LAMP es una conjunto de sistemas de software que tienen como objetivo el dar apoyo al desarrollo de aplicaciones Web; Linux, Apache, MySQL, PHP no fueron específicamente creadas para ser fusionadas entre sí; sin embargo debido a su popularización entre desarrolladores por la presentación de un gran número de ventajas tales como bajos costos, adaptabilidad, eficacia en la organización de componentes y el uso adecuado del paradigma Cliente/Servidor, el LAMP se ha hecho una de las opciones más apetecidas para su uso en la ingeniería de software. Linux: Es un sistema operativo basado con énfasis en el software y libre y sobre todo la seguridad, Linux es combinado con herramientas del proyecto GNU por lo que comúnmente se hace referencia a Linux como GNU/Linux, Linux posee varios tipos de Distribuciones, tales como Ubuntu o Debian que son las distribuciones más populares, siendo la primera una distribución comercial y la segunda una distribución mantenida por la comunidad Linux. Apache (Servidor HTTP Apache): Apache es un servidor web de código abierto, es decir que puede ser usado de forma libre y modificado como sea conveniente, es el servidor web más usado actualmente alrededor del mundo alojando paginas estáticas y dinámicas, muchas aplicaciones web están desarrolladas con base a Apache o utilizan características propias de este, con apache también pueden ser compartidos archivos desde el internet, con solo poner los archivos en la raíz de documentos de Apache, Apache trabaja con una gran cantidad de Scripts, tales como PHP, Perl, Java y paginas JSP, es configurable para ejecutar scripts que ayuden en el manejo de errores. MySQL: Sistema de Base de Datos Relacional propiedad de Sun Mycrosystems y Oracle Corporation, MySQL es software libre, mas no es de código abierto, por lo que el software puede usarse sin necesidad de hacer compra de una licencia privativa 12
  • 13. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software pero su código fuente no puede ser modificado. SQL (Lenguaje de Consulta Estructurado) es un estándar para las bases de datos relacionales, comercializado desde 1981, MySQL maneja el estándar SQL pero proporcionando velocidad y fiabilidad; MySQL se adapta a una gran variedad de lenguajes de programación debido a que estos lenguajes contienen API para ligar se con MySQL, algunos de los lenguajes más populares que poseen esta característica son; Java, Perl, C++, Pascal, PHP, Python y Ruby. MySQL es fácil de instalar y configurar bajo cualquier sistema operativo, no solamente posee facilidades en su instalación sino que también se accede fácilmente a las consultas con tan solo un comando (SELECT * FROM). PHP: PHP (Hypertext Pre-processor) es un Lenguaje de Programación Interpretado creado en 1994 cuyo Software es Libre, su funcionalidad primordial es la creación de páginas web dinámicas, PHP se puede ejecutar en la mayoría de navegadores y en casi todas las plataformas. PHP es un lenguaje muy fácil de usar compartiendo estructuras similares a las de C, por lo que los programadores deben dedicar poco tiempo a aprender este nuevo lenguaje. El PHP es un lenguaje interpretado que se ejecuta en el servidor y envía las respuestas en forma de html al navegador del usuario, por lo que casi cualquier maquina (incluso dispositivos móviles) pueden ver páginas web php. Figura 2 Flujo de datos en PHP 13
  • 14. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software 1.2.1 Características a evaluar de la plataforma • Portabilidad: La portabilidad bajo la plataforma LAMP es un bastante eficaz, debido a que PHP y MySQL pueden estar contenidos ya sea en Windows o en Linux, por su parte PHP está disponible para casi cualquier sistema operativo desde Unix hasta Mac, PHP puede funcionar bajo cualquier sistema operativo sin necesidad de cambios en el código MySQL es un gestor de bases de datos multiplataforma que combinado con PHP posee una gran Portabilidad. • Seguridad: Al ser software Libre, Linux, Apache, PHP y MySQL, puede ser adaptada a las necesidades como nos sea conveniente (mediante el entendimiento de cómo funcionan), los errores encontrados en cada una de las aplicaciones son manejados y solucionados por la comunidad de uso LAMP alrededor del mundo, que sueles planear estrategias y mejoras, divulgándolas por medio de la Web, cuando se encuentran agujeros de seguridad, rápidamente se generan parches que solucionan el inconveniente, sin embargo la configuración de algunos servicios WEB requiere más tiempo que en el sistema operativo Windows aunque no es gran desventaja teniendo en cuenta que brinda mayor seguridad que en Windows. • Rendimiento: 14
  • 15. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software La combinación de Linux con Apache es claramente superior al rendimiento que da Windows, utilizando a PHP para la lógica del negocio y MySQL para la persistencia, PHP y MySQL bajo Windows posee una gran serie de fallos, mientras que el uso de Linux nos ayuda a adaptar el desarrollo a nuestras necesidades y manejar fallos satisfactoriamente. • Documentación: Todos los aplicativos que componen el LAMP tienen un gran auge alrededor del mundo, por lo que no es raro hallar referencias variadas en la internet y una gran comunidad interesada en aprender y resolver dudas, Linux por ejemplo posee una gran comunidad de usuarios y desarrolladores en todo el planeta, dando apoyo y creando nuevas tecnologías para el uso de todos, además de los programadores aficionados en la internet también existe documentación oficial de cada uno de los aplicativos, para Apache, PHP y MySQL,; http://www.apache2.es/, http://www.mysql.com/, http://www.php- es.com/. • Facilidad de Uso / Curva de Aprendizaje: Aunque para algunos usuarios Novatos les resulte difícil la instalación de cualquier aplicación en Linux mediante el uso de comandos, la instalación de Apache, MySQL y PHP en Linux es bastante sencilla, simplemente utilizando el comando apt-get install típico se instala cada componente del LAMP (Apache, MySQL, PHP), sin embargo es recomendable primero instalar el servidor Apache, para que de este modo pueda configurarse correctamente php y MySQL, por otro lado el proceso de actualización para cada aplicación se lleva a cabo por Linux cada vez que sea conveniente, por lo que el usuario de LAMP no tiene mucho de qué preocuparse en cuanto a este tema, gracias a la documentación es de facilidad para cualquier usuario la adaptación a esta plataforma. • Manejo de Errores: Además de que Apache trata de controlar adecuadamente los errores mediante su lógica interna o con el uso de Scripts, PHP se encarga de manejar y capturar errores, por lo que nos es más fácil identificar donde están los problemas de desarrollo en nuestro Sistema, cuando se trabaja PHP en conjunto con MySQL es fácil identificar cuando hay problemas de conexión con la base de datos, por lo que con ello podríamos controlar la situación mostrando un simple mensaje al usuario o procediendo de una forma más compleja; al igual que Java PHP5 puede utilizar bloques try/catch, a diferencia 15
  • 16. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software de su versión anterior. • Robustez: Linux se caracteriza por su Robustez, aunque sufra algún cambio de configuración no es necesario reiniciar el sistema, puede pasar meses e incluso años en uso sin que su estructura se afecte, si un programa llega a fallar no afecta el sistema, Linux posee un gran número de módulos muchos de estos hacen el trabajo de controlar situaciones de error y desbordamiento adicional, PHP posee una gran utilidad para el manejo de errores, mientras que MySQL es uno de los motores de bases de datos más potentes y robustos en el mercado caracterizado por soporte ACID, soporte de transacciones múltiples, asegura integridad de los datos mediante niveles de aislamiento de transacciones y detección de deadlocks. • Escalabilidad: LAMP es caracterizada por ofrecer lo último en escalabilidad ofrecida especialmente por MySQL, puede manejar bases de datos empotradas que manejan una pequeña cantidad de espacio en memoria, también podría manejar datos que contenga muchos terabytes de información, un software creado en LAMP tiene grandes posibilidades adaptarse a los cambios con respecto al tiempo, PHP, Linux, MySQL poseen facilidades de adaptación respecto a la evolución del software. • Interoperabilidad / Flexibilidad: Al basarse en OpenSource LAMP posee una gran ventaja, cualquier programador puede hacer ventaja de esto, adaptando el software como mas le sea conveniente, utilizando los componentes que desee e interactuando con diferentes tecnologías, MySQL, PHP y Apache son multiplataforma, por tanto la flexibilidad que ofrecen es enorme, pueden ser migrados a casi cualquier Sistema Operativo. • Licenciamiento: Al tener Licencia pública, LAMP cumple con una serie de ventajas, Garantiza la Posibilidad de Modificarse, se obtienen las actualizaciones y nuevas versiones de cada uno de los programas que lo componen de manera totalmente gratuita, contiene un gran número de bibliotecas distribuidas en la Web; sin embargo si sucede algún fallo con el uso de alguno de los programas, no se es redimido por el problema y el usuario deberá asumir los costos según sea el fallo. 16
  • 17. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software 17
  • 18. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software La siguiente plataforma fue investigada por: Alejandro Suárez 1.3 Plataforma .NET (ASP/ASPX.NET) La plataforma .NET es la propuesta diseñada por Microsoft para el desarrollo de aplicaciones orientadas a objetos donde el código pueda ser ejecutado de manera local, distribuida o remota1. A grandes rasgos la plataforma .NET proporciona un entorno de ejecución administrado donde el desarrollo y la implementación se vuelven procesos simplificados y la integración de una gran variedad de lenguajes de programación permite la interoperabilidad y comunicación directa del software a través de internet; todo esto de una manera coherente, segura y sencilla. .NET ofrece muchas posibilidades para que servicios y programas puedan interactuar. Si bien el concepto principal de la plataforma .NET es la idea de servicios web mediante el uso de las tecnologías de internet, la plataforma también provee herramientas para otros tipos de aplicaciones.2 Para desarrollar aplicaciones para la plataforma .NET (tanto servicios Web como aplicaciones tradicionales) Microsoft ha publicado el denominado kit de desarrollo de software conocido como .NET Framework.3 En la actualidad, la última versión de .NET Framework es la versión 4.0 (22 de Marzo de 2010). .NET Framework está constituido en tres partes fundamentales: el Common Language Runtime, la biblioteca de clases y ASP.NET. 18
  • 19. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software • Common Language Runtime (CLR) Es el motor de la plataforma en tiempo de ejecución, se encarga de administrar la ejecución del código que ha sido compilado además de proporcionar servicios centrales tales como la comunicación remota, la administración de la memoria y el manejo de los subprocesos creados. Figura 3 Common Language Runtime (CLR) Una manera de entender la funcionalidad del CLR es asimilarlo con la máquina virtual de java.4,5 Las dos principales características del CLR son ser multiplataforma y multilenguaje, la primera permite lograr que el CLR ejecute cualquier aplicación diseñada para la plataforma .NET, para que esto suceda es necesario que exista el CLR para la plataforma en que se desarrolla la aplicación. Como la especificación del CLR se encuentra abierta, es posible hoy en día ejecutar aplicaciones no solo en las diferentes versiones de Windows sino también en Linux y a futuro podría hacerse para otros sistemas operativos. Al ser multilenguaje la plataforma .NET permite desarrollar componentes de software utilizando casi cualquier lenguaje de programación, de forma que lo que 19
  • 20. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software se escribe en un lenguaje se pueda utilizar en otro de la manera más fácil, sencilla y transparente posible, para lograr esto es necesario establecer ciertas reglas o directrices comunes en los lenguajes; también es posible encontrar varios compiladores para lenguajes para la plataforma .NET tales como Visual Basic .NET, C#, Eiffel entre otros. A la fecha la plataforma .NET soporta ya más de 20 lenguajes6 de programación lo que ha permitido eliminar las diferencias que existían entre lo que se podía hacer con un lenguaje u otro. El CLR está diseñado para realizar las cosas de manera segura y sólida, esto es llevado a cabo mediante los siguientes servicios:  Cargador de Clases: permite cargar en memoria las clases que se van a utilizar.  Common Intermediate Language: Transforma a código intermedio de alto nivel de manera independiente del hardware que lo ejecuta y lo convierte a código maquina propio del dispositivo. Anteriormente conocido como MSIL por Microsoft Intermediate Language.  Administrador de Código: coordina toda la operación de los distintos subsistemas del CLR.  Recolector de Basura: elimina de memoria objetos no utilizados.  Motor de Seguridad: administra la seguridad del código que se ejecuta.  Motor de Depuración: permite hacer un seguimiento (paso a paso) de la ejecución del código aún cuando se utilicen lenguajes distintos.  Verificador de Tipos: controla que las variables de la aplicación usen el área de memoria que tienen asignado.  Administrador de Excepciones: maneja los errores que se producen durante la ejecución del código.  Soporte de multiproceso (threads): permite ejecutar código en forma paralela al trabajar con hilos.  Empaquetador de COM: coordina la comunicación con los componentes COM para que puedan ser usados por el .NET Framework.  Soporte de la Biblioteca de Clases Base: representa una interfaz con las clases base del .NET Framework. • Biblioteca de Clases: 20
  • 21. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software Es una completa colección orientada a objetos con el fin de ser reutilizables y empleadas para desarrollar aplicaciones que abarcan desde las tradicionales (GUI) hasta las basadas en las innovaciones más recientes proporcionadas por ASP.NET, como los formularios Web Forms y los servicios Web XML. Los tipos de .NET Framework utilizan un esquema de nomenclatura con sintaxis de punto lo que indica la existencia de una jerarquía. Esta técnica agrupa tipos relacionados en espacios de nombres para que se pueda buscar y hacer referencia a ellos más fácilmente y permite integrar fácilmente los componentes de terceros. 21
  • 22. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software Figura 4 Biblioteca de clases .NET • ASP.NET Es la parte más importante de la capa superior de la plataforma, ASP.NET es usada para la construcción de sitios web dinámicos, aplicaciones web y servicios web XML, es conocida como sucesora de la tecnología ASP pero reconsiderada hoy en día como mas que su evolución debido a las diferentes incorporaciones que se le han hecho. Una de las principales características de ASP.NET es lograr separar de una manera limpia la parte lógica de la aplicación de la interfaz lo cual ha supuesto una nueva idea y forma de programar las aplicaciones web al hacerlo más fácil (el desarrollo de las aplicaciones web no es considerado como un trabajo fácil debido a la mezcla de lenguajes de etiquetas y 22
  • 23. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software conexiones y a que implica tener otros conocimientos con respecto a la aplicaciones tradicionales).7 Al incorporar los servicios web se ha permitido la descentralización del software en la red lo cual ofrece un nuevo enfoque: el de la web orientada a objetos. Las páginas de ASP.NET, conocidas oficialmente como "web forms" (formularios web), son el principal medio de construcción para el desarrollo de aplicaciones web, su extensión es .aspx y está constituido por etiquetas y código dinámico. ASP.NET fomenta la separación de la presentación y del código mediante el modelo Code-behind el cual distribuye el código de cada una de las capas en archivos diferentes logrando una alta cohesión, este modelo se puede asemejar con la separación del modelo vista controlador (MVC). Adicionalmente, ASP.NET permite la creación de componentes reutilizables lo cual se realiza a través de la biblioteca de clases. Por último, ASP.NET sólo funciona sobre el servidor de Microsoft IIS, lo que supone una desventaja respecto a otros lenguajes del lado de servidor, ejecutables sobre otros servidores más populares como Apache7. Figura 5 Flujo de datos en .NET 1.3.1 Características a evaluar de la plataforma • Portabilidad: la plataforma .NET es teóricamente agnóstica con respecto a la plataforma debido al CLR pero como se mencionó anteriormente ya se ha implementado para Linux y a futuro puede hacerse para otros sistemas operativos. 23
  • 24. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software • Seguridad: la plataforma cuenta con un motor de seguridad (Código de Acceso de Seguridad, validador y verificado), además, debido a su diseño se hace frente a vulnerabilidades anteriormente explotadas como desbordamiento de buffer o el acceso a la memoria a nivel de procesos. • Rendimiento: el motor en tiempo de ejecución está diseñado para mejorar el rendimiento ya que el código administrado nunca se interpreta. Una característica denominada compilación JIT (Just-In-Time) permite ejecutar todo el código administrado en el lenguaje máquina nativo del sistema que se ejecuta. Otro aspecto relacionado con el rendimiento es que el administrador de memoria evita que la memoria se pueda fragmentar y aumenta la zona de referencia de la memoria para mejorar aún más el rendimiento. • Documentación: la plataforma .NET ofrece mucha documentación de ayuda (herramientas, debuggers, editores) que se encuentra incluida en la IDE, además en la web se puede encontrar bastante información debido al éxito que ha tenido la plataforma. • Facilidad de uso / Curva de aprendizaje: gracias a la documentación y soporte de ayuda .Net se vuelve fácil de usar, además, al ser multilenguaje es fácil para un usuario integrarse de manera rápida en de desarrollo de aplicaciones. • Manejo de errores: mediante el motor de depuración que permite el seguimiento paso a paso y al administrador de excepciones el manejo de errores es tratable y fácil de manejar. • Madurez / Robustez: la plataforma se ha consolidado hoy en día como una de las más importantes del mercado y su madurez llega a ser casi de una década, la robustez está dada por la biblioteca de clases y la misma composición de la plataforma. • Escalabilidad: la plataforma permite diseñar aplicaciones donde la escalabilidad es imperante, por ejemplo hay métodos de carga balanceada para el trabajo de servidores clúster de tal manera que estos colaboren y funcionen como uno solo. 24
  • 25. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software • Interoperabilidad / Flexibilidad: al ser multilenguaje la plataforma permite la colaboración de gran cantidad de componentes escritos en los diferentes lenguajes; mediante la biblioteca de clases de permite la comunicación de manera correcta de dichos componentes. • Licenciamiento: Microsoft y sus socios trataron de conseguir patentes para C# (lenguaje desarrollado para la plataforma) y el CLI pero por cuestiones de estándares (ECMA e ISO) se solicitó que era esencial que la implementación estuviera disponible bajo “términos no discriminatorios” y ahora las patentes están disponibles, sin embargo esto no ocurrió para el .NET Framework ya que hasta octubre de 2007 solo se liberó el código fuente de la biblioteca de clases de la plataforma. A la fecha es posible crear aplicaciones comerciales sin llegar a pagar algún costo pero depende de las herramientas que se utilizaron. La siguiente plataforma fue investigada por: Nelson Puerta 1.4 JEE Java Platform, Enterprise Edition o Java EE (anteriormente conocido como J2EE hasta la versión 1.4), es una plataforma para desarrollar y ejecutar software de aplicaciones en Lenguaje de programación Java con arquitectura de N capas distribuidas y que se apoya ampliamente en componentes de software modulares, ejecutándose sobre un servidor de aplicaciones. La plataforma Java EE está definida por una especificación, similar a otras especificaciones del Java CommunityProcess, Java EE es también considerada informalmente como un estándar debido a que los proveedores deben cumplir ciertos requisitos de conformidad para declarar que sus productos son conformes a Java EE; estandarizado por The Java CommunityProcess / JCP. 25
  • 26. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software Java EE incluye varias especificaciones de API, tales como JDBC, RMI, e- mail, JMS, Servicios Web, XML, etc y define cómo coordinarlos. Java EE también configura algunas especificaciones únicas para Java EE para componentes estas incluyenEnterprise JavaBeans, servlets, portlets (siguiendo la especificación de Portlets Java), JavaServerPages y varias tecnologías de servicios web. Ello permite al desarrollador crear una Aplicación de Empresa portable entre plataformas y escalable, a la vez que integrable con tecnologías anteriores. Otros beneficios añadidos son, por ejemplo, que el servidor de aplicaciones puede manejar transacciones, la seguridad, escalabilidad, concurrencia y gestión de los componentes desplegados, significando que los desarrolladores pueden concentrarse más en la lógica de negocio de los componentes en lugar de en tareas de mantenimiento de bajo nivel. Figura 6 Capas de JEE 26
  • 27. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software 1.4.1 Características a evaluar de la plataforma JEE presenta diversas características que se van a mencionar brevemente a continuación con lo que se • Documentación: o Java Platform, Enterprise Edition (Java EE) Technical Documentation http://download.oracle.com/javaee/ o Java Tips http://www.java-tips.org/java-ee-tips/ • Seguridad: Aunque otros modelos de aplicaciones empresariales, requieren medidas de seguridad para una plataforma específica en cada aplicación, el entorno de seguridad JEE permite que los problemas de seguridad se determinen en el tiempo de implementación. La plataforma Java EE hace aplicaciones portátiles para una amplia variedad de implementaciones de seguridad, protegiendo a los desarrolladores de una compleja implementación de funciones de seguridad. La plataforma Java EE proporciona reglas declarativas estándar de control de acceso que son definidos por el desarrollador e interpretado cuando se implementa la aplicación en el servidor. Java EE también proporciona mecanismos estándar de inicio de sesión para que los desarrolladores no tengan que emplear estos mecanismos en sus aplicaciones. Con JEE una misma aplicación funciona en una gran variedad de entornos de seguridad sin necesidad de cambiar el código fuente. • Facilidad de uso: El proceso de instalación de JEE no es complejo, es bastante sencillo e intuitivo, ya que se puede descargar de la página oficial y seguir tranquilamente las instrucciones del wizzard. • Internacionalización: mecanismos para el manejo de parámetros que permitan la internacionalización del portal. • Manejo de errores: Las técnicas de manejos de errores que se implementan en JEE son las mismas que se hacen con java ya que al interior de la plataforma se trabaja con este lenguaje. • Soporte a nuevos estándares de la Web 2.0 o Web 3.0. Web 2.0: Tiene características específicas que hacen difícil al elección de Java EE como implementación. Las aplicaciones utilizan las APIs para acceder a los servicios de otras mucho más que en las típicas aplicaciones de Web 1.0, inclinación por la interacción de tipo consumidor a consumidor (C2C), es 27
  • 28. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software decir, el propietario sólo genera una pequeña parte del contenido de la aplicación; la mayor parte es generada por el usuario. SOA+B2C+Web 2.0 = Latencia muy alta Las aplicaciones Web 2.0 utilizan frecuentemente servicios y feeds que están atados a la API del servicio SOA. Estas aplicaciones necesitan consumir servicios en un contexto B2C. Por ejemplo, una aplicación puede mostrar información sobre las condiciones climáticas, información sobre el tráfico y un mapa de carreteras, obteniendo cada información de un recurso distinto. El tiempo de conseguir cada parte se añade al tiempo global de procesar la petición. Existen técnicas de cacheo que pueden aliviar la latencia, pero no son aplicables en todas las situaciones. No es práctico e impensable, por ejemplo, cachear resultados de consultas o tráfico de información que se obtiene en tiempo real. Por su propia naturaleza, la invocación de servicios es un proceso lento y con una alta latencia que normalmente coloca sólo una pequeña porción de los recursos de CPU en el cliente y en el servidor. La mayor parte de la duración de la invocación de un servicio se gasta en establecer la conexión y en trasmitir los datos. Por lo tanto, mejorar el rendimiento en el cliente o en el lado del servidor generalmente es sólo una pequeñareducción en la duración de la llamada. La latencia de las operaciones afecta más a las aplicaciones Java EE que el throughput de cada operación. Incluso si el servicio de una aplicación puede manejar un gran volumen de operaciones, tiene la misma latencia e incluso puede incrementarse. El conjunto de las aplicaciones Java EE no manejan bien está situación porque viola la suposición de que la latencia está implícita en el diseño de estas APIs. • Mecanismos de Licenciamiento: Evaluar el tipo de licencias, ventajas de tener software libre o propietario, interconexión con diferentes DBMS, utilización en empresas desarrolladoras de software. • Interoperabilidad: La interoperabilidad en JEE se puede manejar con EJB que es un protocolo basado en Internet Inter-ORB Protocolo (IIOP/GIOP 1.2), el protocolo CommonSecureInteroperabilityversion 2 (CSIv2).Es bastante robusto y permite manejar también seguridad y persistencia en caso de tener que lidiar con sistemas tipo legacy. 28
  • 29. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software • Robustez: JEE se ha consolidado como una de las plataformas más importantes del mercado y su madurez llega a ser casi de al menos quince años, la robustez está dada por la biblioteca de clases y la misma composición de la plataforma. A demás de eso la metodología desarrollada por Sun conocida como SunTone 2 am permite desplegar al máximo las características de esta plataforma. Figura 7 Características JEE 1.4.2 GlassFish ¿Qué es GlassFish? Es un servidor de aplicaciones de código abierto desarrollado por SUN MICROSYSTEMS, que implementa las tecnologías definidas en la plataforma Java EE y permite ejecutar aplicaciones que siguen esta especificación. GlassFish está basado en el código fuente donado por Sun, que proporcionó el módulo de persistencia TopLink. GlassFish tiene como base al servidor Sun Java System Application Server de Oracle Corporation, un derivado de Apache Tomcat, y que usa un componente adicional llamado Grizzly que usa Java NIO para escalabilidad y velocidad. Además Soporta todo tipo de plataformas, Linux, Windows, Solaris, Solaris_X86 y MacOS. 29
  • 30. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software • Figura 8 GlassFish A continuación se presentara un conjunto de características en donde se compara las dos versiones de Glassfish 2.1.1 y 3.0.1 Tabla de Comparación de GlassFish versión 2.1.1 y 3.0.1 Característica GlassFishversión GlassFish versión 2.1.x 3.0.x versión 2.1.1 lanzada versión 3.0.1 Lanzada Fecha de Lanzamiento en Octubre 2009 en Junio 2010 Soporte Comercial Disponible X X SailFin (Telco Application Server) X Java Plataform, Enterprise Edition Java EE 5 Java EE 6 [2] Certificado con Java EE 30
  • 31. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software Web Application Servlet 2.5JSP 2.1, Servlet 3.0JSP 2.2, Tecnologías Java Web JSF 1.2 JSF 2.0 Metro Web Services Stack Interoperabilidad con Interoperabilidad .NET .NET 3.0Web Services 3.5Web Services Next Generation Web jMaki (Ajax Framework) X[4] X[4] Jersey / JAX-RS JAX-RS 1.0 JAX-RS 1.1 Administración Admin Consola y CLI X X (Administración Centralizada) JMX X X Agente Nodo & Manejo de X Clusters Herramientas de Actualización X X RESTful admin API X Paquetes de Instalación con perfil X [5] WEB[5] Monitoreo (btrace, dtrace) X Cliente Contenedores para Aplicaciones X X tipo Cliente Soporte de Java WebStart X X Aplicaciones tipo Enterprise Java DB, JDBC Pooling de Java DB 10.4.2.1 Java DB 10.5.3.0 Connexiones 31
  • 32. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software JTA 1.1/JTS 1.0 X X J2EE Conectores 1.5 Conectores 1.6 Enterprise JavaBeans (EJB) EJB 3.0 EJB 3.1 JMS 1.1 X X JPA 1.0(TopLink) JPA 2.0(EclipseLink) Java Pertistence API (JPA) Scripting jRuby/Rails Web Archive (.war) X X deployment jRuby “Nativo”/Rails deployment – X sin necesidad de un contenedor Servlet Ajuste dinamico de jRuby en X tiempo de ejecución X [4] Groovy/Grails Early Jython/Django support X [4] Herramientas de Desarrollo NetBeans IDE X[6] X[6] Eclipse IDE X X Centro de Actualizaciones X X Centro de actualizaciones X integrado con una consola de administración Herramientas de Verificación X 32
  • 33. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software Frameworks 1.9.18 Grizzly (Java NIO) 1.0.34 Comet (HTTP Push) X X X CORBA X Arquitectura Modular basada en X OSGi GlassFish Embedded X Funcionalidades Extendidas de GlassFish (Consola de X Administracion, asadmin CLI utility, etc) Rendimiento X[3] Clustering X Integración X Integración con Identity Manager, Access Manager (OpenSSO), Registry Server, y Java Business Integration (OpenESB) [1]Soporte para Desarrolladores únicamente. [2] GlassFish 3.0.1 Correrá aplicaciones Java Enterprise y Enterprise Edition 5. [3] Soporte para clustering básico usando mod_jk. [4] GlassFish posee un Update Center que permite la descarga de actualizaciones a través de un entorno grafico llamado "updatetool", o a través de la consola de administración GlassFish 3. [5] GlassFish 3.0.1 posee cada uno de los perfiles web para Java EE. El updatetool permite actualizar o mantener las características deseadas. [6] Soportado en NetBeans 6.9. 33
  • 34. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software 1.5 Valoración de las características Todas las características se evaluaran entre 0 y 5 siendo 0 la nota más baja. A continuación se describe las valoraciones de manera porcentual. Figura 9 Valoración de las características 1.6 Calificación de cada Plataforma 34
  • 35. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software Figura 10 Calificación de cada plataforma 1.7 Computo de totales y selección de la mejor plataforma. Figura 11 Calificación total de cada plataforma 2 SELECCIÓN DEL FRAMEWORK. 35
  • 36. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software 2.1 ICEfaces. El siguiente Framework fue investigado por: Santiago Agudelo Ibarra ICEFaces: Es un framework de código abierto para construir aplicaciones web con AJAX tipo RIA (Rich Internet Application). Permite al programador incluir una serie de Ajax-tags en sus JSP o xhtml de tal manera que el código Ajax es generado por el propio framework automáticamente. ICEFaces aísla completamente al desarrollador de AJAX. No hacen falta etiquetas especiales: se ponen los controles en la pantalla e ICEFaces se encarga de enviar sólo la información necesaria entre cliente y servidor. Es decir, ya no se envían los formularios a la antigua usanza, en un POST de HTTP, sino que sólo se envían los cambios que ha hecho el usuario del cliente al servidor, y los cambios en la pantalla del servidor al cliente. Además, con la inclusión de la librería Scriptaculous en ICEFaces, se dispone de arrastrar + soltar y de efectos (fundidos, parpadeos, apariciones) para los controles. 2.1.1 Características a evaluar del Framework. Documentación: documentos de todas las versiones en la página oficial: http://www.icefaces.org/main/resources/. Foros: http://www.icefaces.org/JForum/forums/list.page Demos de los componentes ICEfaces: http://component-showcase.icefaces.org/component-showcase/showcase.iface Seguridad: ICEfaces es una de las soluciones Ajax más seguras del mercado. Es compatible con SSL, previene los scripts de cross-site (es un tipo de inseguridad informática o agujero de seguridad basado en la explotación de vulnerabilidades del sistema de validación de HTML incrustado.), inyección de código malicioso. Es una solución Ajax basada en servidor, la cual no utiliza datos de usuarios, además es especialmente efectivo en la prevención de fallos en los submits de los formularios y el ataque SQL por inyección. 36
  • 37. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software Facilidad de uso: La instalación de la aplicación se hace por medio de un plugin, el cual se puede descargar gratuitamente en la página oficial del framework. http://www.icefaces.org/main/downloads/os-downloads.iface?category=Stable %20Releases,NetBeans. Este plugin es agregado a la plataforma de la cual será utilizado de esta manera fácil y sencilla puede instalarse y estar listo para usarcé en unos cuantos pasos. Mensajes de error y validación: Suele ser una fuente de errores el que los mensajes de validación o error desaparezcan debido a que esos campos no tengan el atributo inmediate situado a true. Este problema es debido a que sólo se hace submit de una parte del formulario. JSF permite que se modifiquen el texto de los mensajes de error. A continuación se muestra cómo se hace: • Se indica la lista de mensajes que se pretenden reemplazar, por ejemplo para validar la longitud: javax.faces.validator.LengthValidator.MAXIMUM_MESSAGE_ID = Tu mensaje • Por último sólo es necesario agregar en el faces-config.xml el bundle de los mensajes: <application> <message-bundle>com.yourcompany.resources</message-bundle> </application> Internacionalización: La internacionalización es un requisito común de las aplicaciones web modernas, y es fácil de lograr en JSF e ICEfaces. Idiomas soportados se pueden especificar y cambiar dinámicamente por marcado de la página o desde el servidor. Además JSF detectará automáticamente la configuración regional de un navegador web cliente y aplicarlo si el proyecto está configurado correctamente. Tutorial de internacionalización: http://translate.google.com.co/translate?hl=es&langpair=en| es&u=http://wiki.icefaces.org/display/ICE/Internationalization%2Bin%2BICEfaces La versión más estable lanzada por la empresa propietaria de ICEfaces (IceSoft) es la versión 1.6 del framework. No obstante, ya se encuentra una nueva versión ICEfaces con un conjunto de mejoras y arreglos (nuevo popup contextual, google 37
  • 38. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software maps, soporte para funciones adicionales...) aunque actualmente se encuentra en fase de pruebas y debe ser considerada no apta para su uso en producción. Licenciamiento: ICEfaces está bajo una licencia de código abierto Mozilla Public License (MPL). Con el fin de usar e implementar la versión de código abierto de ICEfaces más productiva, los desarrolladores y administradores de proyectos deben ser capaces de / dispuestos a: Soporte Estándares en la web: Basado en estándares Java EE: ICEfaces es el líder tecnológico en la integración de AJAX con la pila de JEE. Su proveedor, ICEsoft, ofrece un amplio soporte para servidores de aplicaciones, servidores de portal, e importantes marcos de código abierto. (usandoAJAX Push, JSF, Facelets, Spring y JPA / Hibernate) sin necesidad de utilizar una línea de código JavaScript. El libro tiene un enfoque especial en la tecnología Facelets que es ahora una MPL: Fue desarrollada originalmente por Netscape Communications Corporation (una división de la empresa América Online), y más tarde su control fue traspasado a la Fundación Mozilla. El siguiente Framework fue investigado por: Jaime Alberto Flórez. 2.2 Java Persistence API (JPA). La plataforma Java EE 5 debe su éxito a la implementación de la tecnología Enterprise JavaBeans (EJB), una tecnología para desarrollar componentes empresariales de una aplicación Java llamados Enterprise Beans, los Enterprise Beans proveen la lógica y representación de los datos para desarrollar 38
  • 39. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software operaciones especificas del negocio dentro de la aplicación, un Enterprise Bean por ejemplo podría encargarse de desarrollar el “Carrito de Compras”, necesario para realizar ventas online, realizando operaciones estándar que ahorran trabajo a los desarrolladores de software y provee una gran simplificación del software, JPA es una adición a la tecnología EJB encargándose de simplificar el modelo entidad persistencia y añadiendo capacidades que no posea EJB; por tanto Java Persistence API provee herramientas para estandarizar el mapeo objeto-relacional (ORM) utilizado para la simplificación del acceso a una Base de datos relaciona usando la programación basada en objetos. JPA está basado en algunos de los mejores Frameworks y APIs, tales como; Hibernate, Oracle TopLink y Java data Objects (JDO), también usa los objetos de persistencia POJO para las bases de Datos Relacionales representando los datos para acceder a las bases de datos como objetos de negocio (Objetos Java). JPA usa algo llamado entidades lo cual representa una tabla de datos, una entidad debe cumplir tres características, persistencia, identidad y soporte transaccional (CRUD), JPA se basa en las anotaciones, así por ejemplo si queremos indicar que una clase POJO es en verdad una entidad debemos hacer la anotación @entity justo antes de nombrar la clase, las anotaciones indican al contenedor como acceder a la base de datos, algunas anotaciones sirven para identificar qué tipo de clave se posee, relaciones unos a muchos, control de acceso a las tablas y un sin fin de medios para interactuar con la base de datos. 2.2.1 Características a evaluar del framework. • Documentación: JPA posee documentación oficial y una gran comunidad de seguidores que generan tutoriales y ejemplos para el desarrollo de aplicaciones bajo la plataforma J2EE, podemos hallar un manual muy completo en la página oficial de Sun Java: http://java.sun.com/javaee/6/docs/tutorial/doc/bnbpz.html El cual además de describirnos el java Persistence API, nos da un tutorial completo de cómo usarlo. • Seguridad: Permite hacer validaciones por medio de dos clases, JTA (Java Transición Api) que hace las validaciones automáticamente o Resource-Local donde el programador tiene que determinar cómo hacer las validaciones y determinar si debe hacerse una transacción (commit o rollback). Debido a que JPA trabaja con EJB puede trabajar en conjunto con el 39
  • 40. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software Servicio Java de Autenticación y Autorización (JAAS) permitiendo acceder a servicios de control de autorización y acceso, también está protegido contra datos corruptos y vulnerabilidades, además puede hacerse uso del JPA Security que provee soluciones de seguridad para las aplicaciones desarrolladas bajo Java con JPA , con el por ejemplo podrás configurar el control de acceso mediante anotaciones o XML y modificar el control basándose en roles. • Facilidad de Uso: Además de JPA se encarga de abordar todos los inconvenientes que poseen los Enterprise Java Beans también tiene una serie de características que son demasiado sencillas en cuanto a su utilización, el manejo de anotaciones es una de ellas, así con tan solo una simple anotación podremos controlar numerosos aspectos de nuestra base de datos relacional, también tiene la facilidad de encapsular un gran conjunto de operaciones, hacer Join y subconsultas muy fácil y eficazmente. • Internacionalización: La internacionalización es el aspecto de una aplicación de software para que pueda adaptarse a varios idiomas y regiones, en el desarrollo de aplicaciones web, este es un aspecto muy importante pues la World Wide Web, puede ser accesible desde cualquier lugar del mundo por cualquier persona a pesar de ello JPA no ha podido resolver el tema del lenguaje debido a que genera mensajes, enlaces y comentarios, específicamente en inglés. • Manejo de Errores: Ya de por si Java tiene la capacidad de manejar errores eficazmente mediante sentencia try y catch, sin embargo mediante JPA también podemos manejar esta clase de situaciones con sentencias try y catch, esto se hace mediante el uso de una completa estructura, todas las excepciones son detectadas por diversas partes de esta estructura y controladas 40 Figura 12 Librerías de excepciones
  • 41. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software mediante IllegalArgumentExeption e IllegalStateException, también es controlada por algunas excepciones JPA incluidas en el paquete java.persistence. • Mecanismos de Licenciamiento: Debido a que JPA es simplemente una especificación, posee un mecanismo de licenciamiento Freeware por lo que se posee de licencia ilimitada, pero sin la posibilidad de modificar el código fuente (no es opensource), muchos otros framework usan JPA y al mismo tiempo están bajo licencia libre algunos de ellos son Hibernate y EclipseLink. 2.3 Hibernate Este framework fue investigado por: Alejandro Suárez HIBERNATE FRAMEWORK (JAVA) Hibernate es un framework de Mapeo Objeto-Relacional (ORM) para la plataforma Java que facilita el mapeo de una base de datos relacional a un modelo de dominio de tipo orientado a objetos. Hibernate permite el desarrollo de clases persistentes que asimilan las bondades del paradigma de programación orientada a objetos (herencia, polimorfismo, composición, etc.) y que son capaces de utilizar las librerías Java (debido a que el lenguaje es Java), pero no sólo se ocupa de la asignación de las clases Java a tablas de bases de datos (y de tipos de datos Java a tipos de datos SQL), sino que también proporciona consulta y recuperación de estos, lo cual reduce 41
  • 42. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software significativamente el tiempo de desarrollo al no tener que hacerlo de manera manual. De manera simple, la arquitectura tiene tres componentes principales: un administrador de conexiones, un administrador de transacciones y el ORM, el primero administra de forma eficiente la conexión a la base de datos (este proceso se considera el que más gasta recurso debido a que en se debe abrir y cerrar muchas veces la conexión), el segundo permite el manejo de las transacciones, incluso más de una a la vez y el tercero se encarga de comunicar los dos modelos (modelo de domino orientado a objetos y modelo de bases de datos relaciones). Figura 13 Arquitectura Hibernate La imagen contigua muestra a un nivel alto de abstracción la arquitectura de Hibernate. Los objetos de persistencias, comúnmente llamados como POJO (Objeto Plain Old Java) son instancias de clases que no extienden (heredan) y no implementan nada en especial, sus atributos son accesibles mediante métodos setter y getter. Para poder asociar un POJO con su tabla en la base de datos Hibernate hace uso de ficheros XML (con extensiones hbm.xml) los cuales permiten mapear la clase a la base de datos al definir en ellos las propiedades del POJO y sus correspondientes nombres de columna, asociación de tipos, referencias, relaciones, etc. Las características, datos de configuración y la manera en que la aplicación se conecta a la base de datos se describen en el archivo de Hibernate.properties; este archivo debe estar en el path de la aplicación. Una de las características únicas de Hibernate es que no requiere que los desarrolladores implementen interfaces propietarios o extiendan clases base propietaria para poder persistir las clases. En vez de eso, Hibernate trata con la reflexión de Java y el aumento de clases en tiempo de ejecución utilizando una librería de generación de código Java muy poderosa y de alto rendimiento llamada 42
  • 43. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software CGLIB. CGLIB se utiliza para extender clases Java e implementar interfaces Java en tiempo de ejecución. El concepto clave más importante dentro Hibernate es la clase Session la cual se encarga de definir las operaciones relacionadas dentro del proceso de negocio, delimitar una transacción y además prestar servicios adicionales (por ejemplo cache que ahorra recursos al evitar abrir y cerrar conexiones con la bases de datos nuevamente), una manera de entender su funcionalidad es compararla con el concepto de conexión de JDBC solo que es más sencilla al tener métodos diseñados para trata con objetos. Es también lógico que tenga que existir una clase superior para crear sesiones y realizar operaciones comunes a los diferentes threads (cada uno asociado a una sesión) como lo es la gestión de la cache. A esta clase se le denomina SessionFactory la cual está inspirada en el patrón de diseño que la denomina, también es posible que la aplicación tenga más de una SessionFactory lo cual cobra sentido si se está utilizando más de una base de datos. Otros conceptos claves son los tipos de objetos que maneja Hibernate: transient y persistent, los primeros son objetos que sólo existen en memoria y no en la base de datos, estos objetos corresponden en su mayoría al estado de los objetos antes de ser almacenados en el repositorio, es decir, antes de que existan, aunque también hay objetos transient que nunca serán almacenados; los segundos objetos corresponden a instancias que han sido creadas y almacenadas en una sesión o bien devueltos en una consulta realizada con la sesión. Hibernate proporciona además el HQL (Hibernate Query Language), un lenguaje multimotor orientado a objetos con el que realizar consultas a la base de datos se hace similar a SQL y es usado para obtener los objetos de la base de datos según los criterios dados. El uso de HQL permite usar un lenguaje intermedio que según la base de datos que usemos y el dialecto que especifiquemos será traducido al SQL dependiente de cada base de datos de forma automática y transparente. Hibernate tiene la ventaja de que es totalmente transparente el uso de la base de datos pudiendo cambiar de base de datos sin necesidad de cambiar una línea de código de la aplicación, simplemente cambiando los ficheros de configuración de Hibernate. Otros de los problemas que trata Hibernate son la granularidad, los subtipos, la identidad, las asociaciones y la navegación de los datos. 43
  • 44. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software Hibernate es una herramienta ORM completa que ha conseguido en un tiempo record una excelente reputación en la comunidad de desarrollo posicionándose claramente como el producto OpenSource líder en este campo gracias a sus prestaciones, buena documentación y estabilidad. A la fecha Hibernate se encuentra en la versión 4.0 2.3.1 Caracteristicas a evaluar del Framework. • Documentación: Hibernate cuenta con muy buena documentación, se pueden encontrar gran cantidad de foros, tutoriales e incluso libros que abordan de manera llana el uso del framework, además la comunidad de JBoss (a la cual se integró Hibernate) cuenta con una completa información acerca de este. • Seguridad: Hibernate implementa mecanismos de seguridad estableciendo limites en las transacciones y a partir de versión 3 la seguridad se gestiona de manera declarativa, cabe aclara que para entornos no gestionados la seguridad es la que establece los límites. Algo a considerar es que Hibernate no es tan invasivo con respecto a otras herramientas ORM (ya que es usa la reflexión de Java) lo cual no lo compromete a mayor grado con otras herramientas en caso en caso de infracciones de seguridad. • Facilidad de uso: al comparar Hibernate con la manera de conectar los modelos de dominio orientado a objetos y modelos relacional, se reduce la complejidad al usar el framework, y si bien esta es una caracterices de la mayoría de herramientas ORM Hibernate saca una ligera ventaja de la otras herramientas ya que tiene su propio lenguaje “HQL” que lo hace multimotor de base de datos, este componente es uno de los atractivos de Hibernate al permitir de manera elegante y fácil realizar las transacciones s al base de datos. Por último Hibernate ya viene integrado al IDE de NetBeans por lo cual su proceso de instalación y configuración es muy sencillo. • Internacionalización; este aspecto llega a estar cubierto por el JBoss Portal en su contendedor de portales a través del uso de recursos en los porlets. 44
  • 45. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software • Manejo de errores: Hibernate cuenta con un manejador de excepciones lo cual permite detectar errores y solucionarlos de manera fácil y rápida, también es cierto que Hibernate no trata de corregir los errores en modo de ejecución pero esto tiene sentido si consideramos el riesgo al tener dos modelos integrados. • Soporte a nuevos estándares: Hibernate se encuentra en evolución desde sus inicios y por su carácter OpenSource se ha popularizado, tanto que inspiro la especificación EJB 3 la cubre el área del estándar JDO, a la fecha hay conflicto entre estos dos estándares pero se debe a cuestiones de preeminencia. • Mecanismo de licenciamiento: Hibernate es software libre, distribuido bajo los términos de la licencia GNU LGPL y mantiene la portabilidad entre todos los motores de bases de datos con un ligero incremento en el tiempo de ejecución. El siguiente Framework fue investigado por: Nelson Puerta 2.4 TOP LINK Toplink construye aplicaciones de alto rendimiento que permiten persistencia de los datos almacenándolos en una base de datos relacional. A su vez ejecuta exitosas transformaciones de datos orientados a objetos en cualquier tipo de dato relacional o elemento XML. Arquitectura de ejecución de TOPLINK. 45
  • 46. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software Figura 14 Arquitectura TOPLINK La figura muestra como TopLink se ajusta en una arquitectura típica de JavaEE compuesta por un servidor de aplicaciones. De esta forma TopLink, es un contenedor opcional para JavaEE que a su vez es un source de datos. Este framework está compuesto por un front-end de sesiones y un acceso a datos del tipo back-end, esto permite hacer uso de mapeos, Query Frameworks, cache y componentes de transacción. De esta manera las aplicaciones del cliente como JSP, Servlet y Struts los cuales ingresan a través de la sesión la cual provee accesos al query framewok y al componente de transacción. Ambos componentes se benefician de la caché para reducir al mínimo los viajes a las bases de datos. Usando Toplink, se puede integrar a una aplicación persistencia y transformación de objetos. Este framework también es adecuado para un vasto rango de arquitecturas que a su vez se puede usar para diseñar, implementar, desplegar y optimizar, la persistencia y transformación de objetos lo que permite soportar una gran variedad de fuentes de datos y formatos, incluyendo los siguientes: • Formato Relacional: Es comúnmente utilizado para la persistencia de las transacciones de los objetos a una base de datos relacional. Se 46
  • 47. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software puede acceder haciendo uso de los drivers de Java Database Connectivity (JDBC). • Formato para los tipos de datos Objeto relacional: Es utilizado para manejar la persistencia de las transacciones, de los objetos que tienen como propósito especial, representaciones estructuradas del origen de los datos, optimizando el almacenamiento en una base de datos. Estos objetos pueden ser accedidos a través de una Oracle Database. • Enterprise Information System(EIS): Es utilizado comúnmente para manejar la persistencia de las transacciones de objetos a una fuente de datos no relacionales, se pueden acceder mediante una aplicación Java EE conocida como Connector Architecture (JCA). Toplink también puede manejar cualquier tipo de registro soportado por EIS, incluyendo indexado, mapeo, o XML. • XML: Es frecuentemente utilizado, para manejar la conversión entre los objetos y documentos de esquemas XML (XSD) a base de documentos XML, utilizando la arquitectura Java para la vinculación XML (JAXB). Toplink soporta EJB 2.n y EJB 3.0 para los entornos Java EE y Java SE incluye a su vez la integración con una amplia variedad de servidores de aplicaciones, como lo son Oracle WebLogic Server, OC4J, SunAS, JBoss e IBM WebSphere application server. Un amplio conjunto de herramientas de desarrollo que provee toplink, incluyendo Oracle JDeveloper TopLink Editor, Eclipse Dali y Oracle TopLink Workbench, permite capturar y definir rápidamente, un objeto a una fuente de datos y un objeto a una representación de datos, con mapeos en un formato de metadatos flexible y eficiente. A su vez en tiempo de ejecución, permite a la aplicación explotar el mapeo de metadatos, con una simple sesión tipo facade, que provee un profundo respaldo al acceso de los datos, consultas, transacciones (con o sin un controlador de transacción externa) y caching. 47
  • 48. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software Figura 15 Esquema TOPLINK Toplink en síntesis es un subconjunto gratuito de software java de acceso a datos de Oracle. Dicha empresa le añadió varias capas de abstracción para hacerlo compatible con JPA. Toplink la cual fue donada por Oracle para a la comunidad de Eclipse en el 2007, lleva mucho tiempo funcionando, no como implementación JPA, sino como capa de acceso a datos. Oracle añadió capas para que fuera accesible vía JPA, exactamente igual que hicieron los de Hibernate. Por lo tanto, TopLink aún tiene que madurar más si se compara con Hibernate. Figura 16 Toplink no posee el mejor rendimiento ya que la memoria ocupada aumenta dramáticamente, poniendo en evidencia que hay algún tipo de memory leak (fuga de memoria) que no posee control alguno. En concreto, el máximo de memoria utilizada (60 mb) triplica al utilizado por Hibernate 48
  • 49. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software La memoria ocupada, aun después de forzar el recolector de basura (GC), puede quedar hasta en 43 mb, lo cual casi triplica la ocupada por Hibernate (13 o 15 mb). Los tiempos de respuesta, por otro lado, fueron el doble que los de Hibernate. 2.4.1 Características a evaluar del Framework • Documentación: La documentación referente a la definición de los elementos que contiene el Framework no es mucha, comparado con otros Framework pero igual dispone de una buena documentación la cual se define muchos de sus elementos más relevantes. • Seguridad: En cuanto a la seguridad esta depende e parte de los medios físicos con los servidores los cuales pueden ser afectados físicamente, pero también a elementos como ataques la base de datos mediante el uso SQL Injection, trabajar Backdoor en el servidor, manipulación de parámetros con en elementos del browser, etc. Otros riesgos de seguridad están asociados directamente con el aplicativo y el manejo de este como la bidireccional de mantenimiento automático de Top link del otro extremo de una relación, cuando uno de los extremos es manipulado, que forma parte de las especificaciones de EJB 2.0) suena como una muy buena idea, pero su aplicación parece inestable y el apoyo a esta función desde el equipo de desarrollo parece estar lejos de ser seguro • Facilidad de uso: Facilita el mapeo de atributos entre una base de datos relacional y el modelo de objetos de una aplicación, mediante archivos declarativos (XML) que permiten establecer estas relaciones. Top link Proporciona una Interfaz web amigable y de fácil manejo. Top link permite una consulta de fácil lectura además es muy fácil de construir diversas expresiones de consulta independientes que luego se combinan en una sola consulta. 49
  • 50. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software • Internacionalización: La internacionalización de top link en la actualidad es buena aunque no sea muy conocido y so sea tan reconocido como hibérnate. • Manejo de errores: Uno delos errores que se presentan en este Framework es un error de traducción cuando intenta traducir las consultas en JPQL Filtros en una consulta orientada en la red Otros de los errores que tiene Top link es que este no es consciente de los cambios realizados en los datos de la base de datos, no hay actualización automática o función, como refresco después de insertar o actualizar para que conteste automáticamente los cambios en los datos de las acciones de activación en el interior del RDBMS. • Soporte a nuevos estándares: Toplink es en gran medida maneja estándares relacionados a SQL, como el establecimiento de la propiedad de una 'base de datos de SQL Server Native'. Toplink cuenta con el apoyo de la mayoría de bases de datos relacionales y también almacenes de datos XML. Al parecer, el desarrollo de una ligera preferencia por el RDBMS de Oracle en el sentido de que las nuevas características de base de datos Oracle tienen una mejor oportunidad de ser apoyado por Toplink de las nuevas características de otros RDBMS. Soporte a estándares JAVA SERVER PAGES (JSP) a demás de trabajar en varios entornos de Desarrollo IDE como NetBeans, Eclipse, Oracle ADF. • Mecanismo de licenciamiento: Se puede obtener una licencia como un producto independiente o como parte de Oracle Application Server Enterprise Edition el cual se basa en estándares J2EE servidor de aplicaciones que se pueden utilizar para implementar aplicaciones. Es comúnmente usado para desplegar Java aplicaciones, pero también se puede utilizar para implementar PL / SQL. Actualmente se puede obtener una versión del Oracle Top Link 11g mejora su objeto-XML Compatibilidad con enlaces a través de la inclusión de componentes de MOXY EclipseLink. MOXY ofrece JAXB y SDO, así como muchas extensiones 50
  • 51. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software y funciones avanzadas de mapeo. 2.5 Valoración de las características Todas las características se evaluaran entre 0 y 5 siendo 0 la nota más baja. A continuación se describe las valoraciones de manera porcentual. Figura 17 Valoración de las características 2.6 Calificación de cada Framework. Figura 18 Calificación de cada Framework 51
  • 52. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software 2.7 Computo de totales y selección del mejor Framework. Figura 19 Calificación total cada Framework 3 PRUEBAS DE CONCEPTO DEL FRAMEWORK 3.1 Arquitectura del Framework (Explicación y diagrama) A continuación se complementa la información especificada en la evaluación del framework sobre Hibernate con respecto a su arquitectura. La siguiente Figura muestra los roles de las interfaces Hibernate más importantes en las capas de persistencia y de negocio de una aplicación J2EE. La capa de negocio está situada sobre la capa de persistencia, ya que la capa de negocio actúa como un cliente de la capa de persistencia. 52
  • 53. GC TENIS UDEA U. de A. VERSION 1 – RTF 3 Seminario de ENFOQUE ARQUITECTONICO Arquitectura de Software Figura 20 Vista de alto nivel del API de Hibernate en una arquitectura por Capas Las interfaces mostradas pueden clasificarse como sigue: • Interfaces llamadas por la aplicación para realizar operaciones básicas (inserciones,.borrados, consultas,...): Session, Transaction, y Query. • Interfaces llamadas por el código de la infraestructura de la aplicación para configurar Hibernate. La más importante es la clase Configuration. • Interfaces callback que permiten a la aplicación reaccionar ante determinados eventos que ocurren dentro de la aplicación, tales como Interceptor, Lifecycle, y Validatable. • Interfaces que permiten extender las funcionalidades de mapeado de Hibernate, como por ejemplo UserType, CompositeUserType, e IdentifierGenerator. Además, Hibernate hace uso de APIs de Java, tales como JDBC, JTA (Java Transaction Api) y JNDI (Java Naming Directory Interface). Se explicaran algunas de las interfaces mencionadas: • La interfaz Session es una de las interfaces primarias en cualquier aplicación Hibernate. 53