曾经我架构的层次安排为
Entity(实体层),Repository(持久化层),DTO(搜索对象层)
Model(模型层),Service(服务层)
拦截层
(Control)控制层
Model模型层的依赖关系:Entity,Service
public class MArticleList
{
public List<Article> list { get; set; }
public DArticle dto { get; set; }
public MArticleList()
{
list = new List<Article>();
dto = new DArticle();
}
public void Get()
{
list = SCommon.sArticle.GetList(dto);
}
}
理由是数据封装用Model,并使用其自身返回数据
Service用于CUD事务的逻辑处理和拼装
Model用于select的数据封装和显示
调用方法为:
MArticleList model=new MArticleList();
model.Get()
但是这样做我认为Model有过度封装的嫌疑
Model作为模型,是有必要和Service交互
比如:一个编辑或增加的界面,只需要一个Entity中的几个字段,一般我们会建一个MArticleEdit的Model,可是如果Model引用Service的话,Service就不能引用Model形成循环依赖.
所以我认为
Model不能有显示数据的能力,只能定义数据和对数据和实体的转换功能
而Service需要对Model进行数据封装和逻辑处理
如下
public class MArticleEdit
{
public string Name{get;set;}
public string Content{get;set;}
public static MArticleEdit ConvertArticleToMArticleEdit(Article entity)
{
MArticleEdit model=new MArticleEdit ();
xxxxxxxx
return model;
}
}