Я начал замечать что-то вроде анти-шаблона в моей разработке ASP.NET. Меня это беспокоит, потому что это кажется правильным, чтобы поддерживать хороший дизайн, но в то же время это неправильно пахнет.
Проблема вот в чем: у нас многоуровневое приложение, нижний слой — это класс, обрабатывающий обращения к сервису, который предоставляет нам данные. Выше находится слой классов, которые позволяют преобразовывать, манипулировать и проверять данные. Выше находятся страницы ASP.NET.
Во многих случаях методы из сервисного уровня не нуждаются в каких-либо изменениях перед переходом к представлению, поэтому модель представляет собой просто прямой проход, например:
public List<IData> GetData(int id, string filter, bool check)
{
return DataService.GetData(id, filter, check);
}
Это не неправильно и не обязательно ужасно работать, но это создает странную зависимость копирования/вставки. Я также работаю над базовым сервисом, и он также во многом повторяет этот шаблон, и повсюду есть интерфейсы. Итак, что происходит: «Мне нужно добавить int someotherID
к GetData
». Поэтому я добавляю его к модели, вызывающей стороне службы, самой службе и интерфейсам. Не помогает и то, что GetData
на самом деле представляет несколько методов, которые используют одну и ту же сигнатуру, но возвращают разную информацию. Интерфейсы немного помогают с этим повторением, но оно все еще возникает то тут, то там.
Есть ли название для этого анти-паттерна? Есть ли исправление, или серьезное изменение архитектуры является единственным реальным способом? Похоже, мне нужно сгладить мою объектную модель, но иногда уровень данных выполняет преобразования, поэтому он имеет ценность. Мне также нравится разделять мой код на «вызов внешней службы» и «предоставление данных страницы».