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