我正在用c#设计调度程序的不同层。这将是在没有GUI的情况下在后台运行的服务。
这是我的体系结构基线(当然,这只是结构的一小段代码。
就建筑学而言,我不确定“最佳实践”。我一直在阅读POCO,值对象,DTO,领域模型,据我所知,下面介绍的是错误的DTO方法。
在我的课程“ ScheduleDTP”中,我有几种方法进行一些相对复杂的操作,其中日期来自数据库。 CalculatePriority是其中一种方法的简化示例
数据库属性: ID,名称,频率,LastRun
操纵的属性: 优先级
工作经理的目的是评估所有计划和按需计划。
据我了解,DTO应该只包含数据,并在不同层之间传输数据。我也认为,这也不应该是JobManagers的职责。
public class ScheduleDTO
{
public Guid ID { get; set; }
public string Name { get; set; }
public int Frequency { get; set; }
public DateTime LastRun { get; set; }
//Calculation based on the values above
public double Priority
{
get
{
return CalculatePriority();
}
}
public double CalculatePriority()
{
return (DateTime.Now - LastRun.AddSeconds(Frequency)).TotalSeconds / 100;
}
}
我是否应该创建一些不同类型的对象,即POCO,Domail模型……来操纵DTO中的数据?
我非常感谢有关如何构造不同图层的任何帮助,或者可以引导我朝正确方向前进的东西
答案 0 :(得分:0)
通常由服务层(又称业务逻辑层,BLL等)处理。服务层的工作是保持核心业务逻辑。关于是否应使用此层,或者是否应将其集成到域对象中,一直存在一个长期的争论。 See this post for more details并进行一些有关贫血领域模型和交易脚本的搜索。
通常,当我看到称为“ Manager”的任何内容时,我会立即将其标记为仔细检查。这可能违反了Single Responsibility Principal周围的规则。最后创建“上帝对象”,这通常是非常危险的反模式。