Echemos un vistazo a este diagrama de componentes que aplica esta arquitectura de 3 capas (para el desarrollo de un sistema de viáticos):
Podemos ver que además de las capas de presentación, procesos del negocio y acceso a datos, tenemos los objetos de negocio aparte como si de otra capa se tratase. Aunque en la realidad debería estar en la capa del medio, esto presenta problemas en la capa de acceso a datos que pasaría a desconocer los objetos con los que debe trabajar NHibernate en nuestras clases DAO. Para comprender claramente de que estoy hablando debemos ver las clases que se encuentran en cada componente de software.
Empezando por el acceso a datos:
NHibernateCore
Aqui estan : una interfaz para los DAO (data access object) genérica (IDAO), una clase abstracta que implementa IDAO (NHibDAOAbstracto), y manejo de sesiones y transacciones de NHibernate. Su contenido responde al excelente trabajo de Billy McCafferty: NHibernate best practices with ASP.Net, cuya lectura recomiendo, antes de comenzar a desarrollar una capa de acceso a datos.
Por ej. IDAO:
public interface IDAO
{
T GetById(IdT id, bool shouldLock);
List
List
T GetUniqueByExample(T exampleInstance, params string[] propertiesToExclude);
List
IList FindRetLista(string consulta);
T Save(T entity);
T SaveOrUpdate(T entity);
void Delete(T entity);
void CommitChanges();
}
Por ej. la clase SolicitudDAO :
public class SolicitudDAO : NHibDAOAbstracto
// Hereda del DAO abstracto definido en NHibernateCore e implementa ISolicitudDao
// para no hacer uso directo del DAO abstracto
{
public List
{
string criterios = "FROM Solicitud a WHERE a.Solicitante.ID = " + s.ID.ToString();
if (Desde != null)
criterios += " and Fecha_soli >=" + ((DateTime)Desde.Value).ToShortDateString();
if (Aprobadas != null)
{
if (Aprobadas == true)
criterios += " and Aprobada=1";
else
criterios += " and Aprobada=0";
}
IDaoFabrica daoFabrica = new DAOFabrica();
ISolicitudDao soliDao = daoFabrica.GetSolicitudDao();
List
solicitudes = soliDao.Find(criterios);
return solicitudes;
}
public Solicitud DarSolicitudXid(int id)
{
IDaoFabrica daoFabrica = new DAOFabrica();
ISolicitudDao soliDao = daoFabrica.GetSolicitudDao();
Solicitud s = soliDao.GetById(id, false);
return s;
}
}
ISolicitudDao:
public interface ISolicitudDao : IDAO
{
List
Solicitud DarSolicitudXid(int id);
}
Por último un ejemplo de DAOFabrica:
public class DAOFabrica : IDaoFabrica
{
public IEmpleadoDao GetEmpleadoDao()
{
return new EmpleadoDAO();
}
public ICategoriaDao GetCategoriaDao()
{
return new CategoriaDAO();
}
public ISolicitudDao GetSolicitudDao()
{
return new SolicitudDAO();
}
...
}
Lo destacable en esta capa de acceso a datos es su independencia del motor de NHibernate, gracias al uso de la Fábrica de DAOs. Por ej. si quisiera reemplazar el NHibernate por Linq for Sql (del Net 3.0), cambiaría en mis DAOs la herencia de la clase abstracta que implementa los métodos contra el motor de acceso a datos:
public class SolicitudDAO : NHibDAOAbstracto
public class SolicitudDAO : LinqDAOAbstracto
Por supuesto deberé desarrollar mi clase LinqDAOAbstracto para que implemente los métodos de la interfaz IDAO.
En parte 2 veremos la capa de negocio (procesos y reglas; ó controladoras de los casos de uso) y ejemplos de los objetos de negocio, cuyas clases están implementadas en su propio componente.
8 comentarios:
Thanks for sharing your thoughts about thomas beatie.
Regards
Also visit my page - hair care
Keep on working, great job!
my site - simply click the following internet page
I am extremely impressed with your writing skills as well as with the
layout on your weblog. Is this a paid theme or did you customize it yourself?
Anyway keep up the nice quality writing, it is rare to see a nice
blog like this one these days.
Also see my web site :: network transfer simultaneously
What i don't understood is in truth how you're not actually much more well-favored than you might be right now.
You are so intelligent. You realize therefore significantly with regards to this matter, made me for my part
consider it from a lot of numerous angles. Its like women and men are
not interested except it is one thing to do with Girl gaga!
Your personal stuffs great. Always take care of it
up!
Visit my page ... begin
my web site > would
Definitely believe that which you said. Your favorite reason seemed to be on the internet the simplest thing to be aware of.
I say to you, I certainly get irked while people consider worries that they plainly don't know about. You managed to hit the nail upon the top and also defined out the whole thing without having side effect , people could take a signal. Will likely be back to get more. Thanks
Look into my website :: Fake People Quotes and Sayings
Having read this I believed it was rather
informative. I appreciate you spending some time and effort to put this content together.
I once again find myself personally spending a lot
of time both reading and commenting. But so what, it was still worthwhile!
Also visit my webpage acornwall.com
What a material of un-ambiguity and preserveness of precious
experience concerning unpredicted emotions.
Feel free to visit my page: Best Home Based Businesses
This piece of writing offers clear idea designed for the
new viewers of blogging, that genuinely how to do blogging and site-building.
My site; www.xxxsexymilfs.com
Publicar un comentario