Чистая архитектура - DTO PlaceC#

Место общения программистов C#
Ответить
Anonymous
 Чистая архитектура - DTO Place

Сообщение Anonymous »

В настоящее время я пытаюсь перенести устаревшее приложение на некоторые API с использованием чистой архитектуры.
До сих пор мне удавалось вносить изменения, но каждый раз, когда я сталкиваюсь с DTO, я не могу понять, как поместить его в чистую архитектуру.
Под DTO я имею в виду: Объект, содержащий несколько объединенных свойств из объектов домена. Я использую DTO, потому что база данных все еще находится в «устаревшем формате», но API должен предоставлять разные форматы ответов в нескольких системах.
Предположим, у меня есть следующая структура:
Домен:

Код: Выделить всё

public class EntityA
{
public string Prop1{get; set;}
}
public class EntityB
{
public string Prop2{get; set;}
}
Тогда у меня есть следующий интерфейс к Сервису:

Код: Выделить всё

public interface IService
{
}
На уровне приложения (варианты использования) у меня есть реализация сервисов, описанных в домене, и сам DTO:

Код: Выделить всё

public class DTO
{
public string Prop1{get; set;}
public string Prop2{get; set;}
}

public class Service : IService
{
public IEnumerable RetrieveDto()
{
return new DTO()//Construct DTO....
}
}
И здесь начинается моя проблема.
Мне нужно изменить интерфейс службы домена, чтобы вернуть DTO. Это создает циклическую ссылку, и я не думаю, что это нормально.
Я пытался создать абстрактный класс DTO в домене и наследовать его, чтобы избежать ссылки из домена в приложение. Но я не совсем уверен, что это должно быть решением, потому что DTO - это просто объекты, хранящие данные, у меня нет ничего в этом абстрактном классе.
В настоящее время преобразователь и DTO размещаются в приложении, потому что из приложения я получаю доступ к инфраструктуре для репозиториев, и здесь я сопоставляю объект с DTO.
Итак, мой вопрос: я понимаю здесь что-то не так? Где правильно должны быть размещены DTO?
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/725 ... -dto-place
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»