Si el carrusel es estandar y tiene sentido reutilizarlo, habria que
ver donde meterlo para que este disponible para otros usos. Pero la
mayoria de las veces el mejor lugar es el propio modulo
('recomendados'). En style suelo poner js relacionados con la
navegacion. Y tambien importo (en main.dec) js servidos por otros
modulos que se que se van a usar en toda la aplicacion. Asi que en
principio, seria la 'c'.
Con respecto a los DAO, lo mejor es no tener multiples
implementaciones. Calculo que debe ser porque tenes una version que
usa hsqldb y otra que usa mysql. Si tenes opcion, trata de dejarle los
temas de portabilidad a hibernate.
Si necesitas lo de las interfases, plantea el problema en relacion al deploy:
- Version c/ hsqldb.
- Version c/ mysql.
Lo que podes hacer ahi es:
recomendados: tiene ui, command, entities y las interfases de los DAO.
Aca vas a tener que poner mocks de los DAOs p/ poder probar.
recomendados-mysl: depende de 'recomendados' e implementa las
interfases de los DAO p/ mysql.
recomendados-hsqldb: depende de 'recomendados' e implementa las
interfases de los DAO p/ hsqldb.
Despues tenes que armar los wars:
<app>-mysql: depende de recomendados y recomendados-myql. Configura
las implementaciones de los DAO p/ mysql.
<app>-hsqldb: depende de recomendados y recomendados-hsqldb. Configura
las implementaciones de los DAO p/ hsqldb.
Por supuesto, este planteo esta asumiendo un monton de cosas, asi que
fijate bien si te sirve.
saludos
2011/8/16 Guillermo Colazo <guillerm...@globant.com>:
> --
> You received this message because you are subscribed to the Google Groups
> "katari-user" group.
> To post to this group, send email to katar...@googlegroups.com.
> To unsubscribe from this group, send email to
> katari-user...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/katari-user?hl=en.
>
--
Pablo Gra\~na
Chief Architect
Globant
Arg Office: +54 (11) 4109 1743
UK Office: +44 (20) 7043 8269 int 8043
US Office: +1 (212) 400 7686 int 8043
Pero ademas tenes otro problema muchisimo mas complicado: la semantica
tipica de un ORM (ej: hibernate o jpa) es muy diferente a la de un
servicio. Vas a tener que pensar muy bien tu interfase para que tu
interfase no tenga 'leaks' de esa diferencia de semantica. El punto
concreto es el tema del lazy. Tal vez tengas que modelar tus DAOs (o
repos) guiandote por el api del servicio.
Otro tema: nosotros favorecemos los conceptos de Domain Driven Design,
y sus convenciones. Te lo comento porque haces mencion de DAO (data
access objects), cuyo objetivo es abstraer el acceso a datos. En
Domain Driven Design, Evans plantea otro concepto bastante parecido a
DAO: el repositorio. La diferencia fundamental es que el repositorio
forma parte del dominio y sirve para acceder a los roots de los
aggregates.
El primer paso para decidir los modulos es tener el modelo de dominio.
La division en modulos en esta etapa se basa 100% en conceptos de
dominio. El criterio es complejo, y Evans lo explica muy bien: 'si el
dominio cuenta una historia, los modulos son los capitulos'. Lo que
planteamos con katari es que, en primera instancia, todas las capas
van junto con los modulos de dominio.
Despues tenes el tema tecnico: el foco aca es como no duplicar codigo.
Este suele ser mucho mas facil: si se necesita en 2 lugares, ponerlo
en un jar aparte.
Por el lado del tama\~no de un modulo, no hay una metrica general. La
guia siempre es cohesion y acoplamiento. A veces puede aparecer 1
clase sola en el dominio, a veces son 10 o 15. No hay que pensar en un
modulo como una user story o un use case.
Una cosa que se suele hacer y no me gusta para nada: sacar una o dos
clases de 1 modulo porque otro modulo depende de esa o esas clases. Si
el modulo es cohesivo, no es mala idea depender de todo el modulo, por
mas que solo se importen 2 clases.
saludos
2011/8/16 Martin Olivera <martin....@globant.com>: