Как использовать DTO, модель предметной области, объект значения, - PullRequest
0 голосов
/ 11 апреля 2019

Я проектирую разные слои планировщика в c #.Это будет служба, работающая в фоновом режиме без графического интерфейса.

Это мой базовый уровень архитектуры (конечно, это лишь небольшой фрагмент структуры.

1

Я сомневаюсь в «наилучшей практике» с точки зрения архетику. Я читал о POCO, объектах значений, DTO, доменной модели и, насколько я понимаю, представленный ниже неправильный подход к DTO.

В моем классе "ScheduleDTP" у меня есть несколько методов, выполняющих некоторые относительные сложные манипуляции с датой, поступающей из базы данных. CalculatePriority - это упрощенный пример одного из методов

Свойства базы данных: ID,Имя, Частота, LastRun

Управляемые свойства: Приоритет

Цель менеджера заданий состоит в том, чтобы оценить все расписания и требования.

Насколько я понимаю, DTO должен содержать толькоданные, и передать их между различными уровнями. Я также считаю, что это не должно быть resposi JobManagerбили тоже.

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 Model, ..., который манипулирует данными в DTO?

Я действительно ценю любую помощь о том, как создатьразные слои или что-то, что могло бы привести меня в правильном направлении

1 Ответ

0 голосов
/ 11 апреля 2019

Обычно это обрабатывается сервисным уровнем (он же уровень бизнес-логики, BLL и т. Д.). Задача сервисного уровня - поддерживать основную бизнес-логику. Существует давний аргумент о том, следует ли использовать этот уровень или его следует интегрировать в доменные объекты. См. Этот пост для получения более подробной информации. и попробуйте поискать модели анемичных доменов и сценарии транзакций.

В общем, когда я вижу что-то, называемое «Менеджер», я немедленно отмечаю это для тщательной проверки. Вероятно, это нарушает правила в отношении принципала единой ответственности . В конечном итоге он создает «объекты Бога», которые обычно являются очень опасным анти-паттерном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...