我遇到了一个设计问题,我需要在表示层中提供业务逻辑。逻辑当前在域层中。在其顶部有一个服务层,其中包含域对象的DTO。这些DTO由WPF表示层以WCF代理的形式引用。域对象的一个示例:
public class Grade
{
List<CriterionGrade> children = new List<CriterionGrade>();
public decimal FinalGrade
{
get
{
decimal final = 0;
foreach (CriterionGrade grade in CriterionGrades)
final += grade.Grade;
return final;
}
}
public IEnumerable<CriterionGrade> CriterionGrades
{
get { return children; }
}
public void AddCriterionGrade(CriterionGrade grade)
{
children.Add(grade);
}
}
我需要总计逻辑(以及其他),所以在我的UI中,我可以有一个数据网格,在每个单元格更改中,可以计算总数(想想50行15列,最后一列是每行的FG )。我迷失了如何设计这个。我想避免重复逻辑,我不确定直接引用域对象是否正确(从我读到的,它不是)。
我已经问过这个问题(Can I use Domain Objects directly in Presentation Layer)并接受了一个答案(将受影响的行发送到服务层以进行计算处理)但是尝试一下,它真的很慢并且发生了很多快速变化在datagrid中,所以我认为计算应该是本地的。
关于如何实现这一点的任何想法?
答案 0 :(得分:0)
由于计算非常简单(基本上是总和),所以看到它在客户端重新实现我不会感到震惊。顺便说一下,您使用的数据网格组件可能已经具有该功能。
您可以转移到客户端的域逻辑数量可能会受到安全问题的限制 - 请考虑客户端代码未公开的Web应用程序。但是虽然DDD对层基本上是严格的,但我不确定层是否具有明确性。类似SPA的应用程序具有胖客户端,其中域层将位于客户端和服务器层之间,不能排除显然是IMO的DDD空间。
关于此的文章:http://blog.jeffshurts.com/2008/10/rich-domain-model-use-on-both-client-and-server-in-an-ria/