再次 - 我对DDD事情感到困惑:)
我有architeture(我还在努力),简短的看起来像这样:
DataLayer:
EntityDao -> Implementing domain layer interfaces (NHibernate)
DomainLayer:
EntityRepository -> Repository for each entity with injected Dao
DomainObjects/Entitys -> Some logic
UI
ASP.Net MVC
Run Code Online (Sandbox Code Playgroud)
我现在正处于创建和使用某些Service类的那一点.我有一些问题:
1.我应该为每个实体/域对象创建至少一个服务吗?
2.a.Should服务有"查询"方法,如Find,FIndAll,FindAll(LINQQuery)?
2.b.我应该停止在上层(UI)中使用Repositorys来获取实体的集合("类似于查找"的方法)并开始只使用服务吗?
3.如果回答2问题是否 - 我应该以并行方式使用服务和存储库(在UI中我只需要获取所有实体我使用Repository.FindAll,当我需要获得该实体的一些"逻辑"列表时使用Service.FindXXX方法)?
4.我在某种程度上认为Repositorys不适合Domain层 - 我应该以某种方式将它们分开并在DOMAIN中只留下像Entity和Services这样的域特定对象吗?如果是 - 给我一些结构示例如何实现.
一些对象的例子:
道:
public class NHibernateDao<T> : IDao<T>
{
public NHibernateDao() { }
public T Get(object id)
{
T entity = (T)NHibernateSession.Get(entityType, id);
return entity;
}
public T Load(object id)
{
T entity = (T)NHibernateSession.Load(entityType, id);
return entity;
}
public …Run Code Online (Sandbox Code Playgroud)