В настоящее время я нахожусь в разработке большого веб-приложения, в основном содержащего Angular SPA и OData WebAPI, который имеет доступ к бэкэнд-слоту.
Мы находимся на ранней стадии и начали внедрять первые классы, включая Model.dll
, который находится в общем пространстве имен, чтобы к нему можно было получить доступ всеми слоями.
Теперь мы обсуждаем эти DTO в модели. Некоторые говорят, что использование интерфейсов абсолютно необходимо, поэтому код будет выглядеть так:Интерфейсы для DTO
namespace MySolution.Common.Model
{
public interface IPerson
{
int Id { get; set; }
string Name { get; set; }
...
}
}
namespace MySolution.Common.Model
{
public class PersonDTO : IPerson
{
public int Id { get; set; }
public string Name { get; set; }
...
}
}
Вот и все. Просто простые DTO без разума.
Теперь я спрашиваю себя, действительно ли это хороший подход, потому что я не вижу необходимости использовать интерфейс здесь.
В чем преимущества этого? Было упомянуто тестируемость, но еще нужно проверить DTos? Инъекция зависимости также не должна быть точкой.
Любое просвещение было бы очень полезно. В конце обучения новые вещи и подходы всегда хороши ...
Нет смысла использовать интерфейс, если он вам не нужен. Это является чрезмерным, что должно быть простым объектом. –
Если * DTO * - это просто список свойств, я вижу это бессмысленным. Если у вас был какой-то репозиторий, вы бы, например, связали это, чтобы заменить соединение с БД на поддельное представление. Если у вас есть 'Person GetPerson()', вы можете иметь версию DB и Fake. – christiandev
Вы можете пометить интерфейс маркера на DTO ('FooDto: IAmADto') для ограничений типов и сопоставлений, но в остальном, какая цель это обслуживание? Здесь нет абстракции, в зависимости от «IPerson» вы получаете ровно такой же уровень сцепления, что и в зависимости от «Человека». –