0

我正在用 c# 设计调度程序的不同层。这将是一个在后台运行的服务,没有 GUI。

这是我的架构基线(当然只是架构的一小部分。

1

我不确定架构方面的“最佳实践”。我一直在阅读 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 中的数据?

我非常感谢有关如何构建不同层或可以引导我走向正确方向的任何帮助

4

1 回答 1

0

这通常由服务层(又名业务逻辑层、BLL 等)处理。服务层的工作是保存核心业务逻辑。关于是否应该使用这一层,或者是否应该将其集成到域对象中,存在一个长期存在的争论。 有关更多详细信息,请参阅这篇文章并在谷歌上搜索有关贫血的域模型和事务脚本。

一般来说,当我看到任何名为“经理”的东西时,我会立即将其标记为仔细检查。这很可能违反了Single Responsibility Principal的规则。它最终创建了“上帝对象”,这通常是一种非常危险的反模式。

于 2019-04-11T20:44:14.223 回答