1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
|
|
1 | |
Выбор архитектурного решения для выборки зависимых объектов (С#)15.01.2020, 12:21. Показов 637. Ответов 3
Метки нет (Все метки)
Есть CRM система которая требует рефакторинга.
Есть один контроллер для отображения списка объектов и есть зависимый котроллер, который показывает список дочерних объектов. Например, Компании и сотрудники компании. Задача усложняется когда надо показать список по транзитивной зависимости. Например, у сотрудников есть контактный телефон. Надо для данной компании показать все контактные телефоны компании. (Компания->Сотрудник->Телефон = Компания -> Телефон). Вот список рассмотренных вариантов и причины, по которым они были отклонены: 1) Каждое отношение между данными представлено в виде класса, который накладывает фильтр на источник данных зависимых записей, используя данные родительского объекта - это скорее функция, чем объект. Создавать множество классов не есть хорошим архитектурным решением. 2) Делегат, или лямда-выражение, которое передает родительский контроллер дочернему. Используя этот делегат дочерний контроллер самостоятельно накладывает фильтр на источник данных. - невозможно переиспользовать такие делегаты, чтоб порождает дублирующийся код 3) На слое модели данных(Entity model) выборку дочерних объектов предоставляет родительский объект. - В случае транзиктивной зависимости это не относится к модели данных, потому не может быть определено в слое модели данных
0
|
15.01.2020, 12:21 | |
Ответы с готовыми решениями:
3
Поиск архитектурного решения для поставленной задачи Реализация архитектурного решения. Наследование и интерфейсы Результат выборки передать GET запросом для изменения условий другой выборки Выбор ЯП для решения ЕГЭ |
Модератор
3077 / 2226 / 462
Регистрация: 26.03.2015
Сообщений: 8,626
|
|
15.01.2020, 16:24 | 2 |
Шаблон "Спецификация" рассматривали?
1
|
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
|
|
17.01.2020, 12:27 [ТС] | 3 |
Это хороший шаблон для объединения нескольких условий.
Да, в системе могут пересекаться несколько разных условий. Например, для Контактов 1) все сотрудники компании А(как деталь под списком компаний) 2) пользователь попросил всех пользователей с именем "аноним" 3) права пользователя на доступ к данным. Но главный вопрос не как их объединить, а где их разместить(в какой слой) 1) отдельная библиотека, или пространство имен в проекте 2) как часть модели данных (NHibernate) 3) как часть сервиса между контроллерами окон 4) как часть контроллеров
0
|
Модератор
3077 / 2226 / 462
Регистрация: 26.03.2015
Сообщений: 8,626
|
||||||
18.01.2020, 22:09 | 4 | |||||
Модель предметной области кроме служб будет содержать спецификации. Упрощенно код будет выглядеть так:
Есть еще другой паттерн - Command Query Responsibility Segregation.
1
|
18.01.2020, 22:09 | |
18.01.2020, 22:09 | |
Помогаю со студенческими работами здесь
4
Выбор ЯП для решения задачи Как проверить две выборки по критерию хи квадрат (есть функция chi2gof но она для одной выборки) Выбор элементов для решения задачи Выбор недорогого, но производительного решения для работы. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |