Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
2 / 2 / 0
Регистрация: 11.05.2015
Сообщений: 45
1

Трехслойная архитектура. Правильно ли реализовал?

06.11.2015, 10:17. Показов 2631. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня программа в общих чертах: есть сущность: класс User. Мы расширяем наше приложение еще одной сущностью - класс Award, т.е. user'ов можем награждать.
Я сделал так:
Создал 4 интерфейса: IUserDAL, IUserLogic, IAwardDAL, IAwardLogic. Интерфейс IUserDAL наследуется от IAwardDAL, IUserLogic от IAwardLogic. В классе логики создаем переменную типа интерфейса IUserDAL и через нее обращаемся к методам нашего DALa.
Вопрос вот в чем: правильно ли это, что нужно одному интерфейсу наследоваться от другого? И сколько в логике по сути должно лежать переменных в данном случае (когда есть две сущности)? Я тут вообще сначала сделал без наследования интерфейсов, просто создал две переменных в логике: userDAL и awardDAL. Но при каждой операции пришлось бы и там и там вносить изменения, т.е. какой-то абсурд. Кто что думает?
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.11.2015, 10:17
Ответы с готовыми решениями:

Трёхслойная архитектура. Ресурсы
Здравствуйте. Ответьте, пожалуйста. Если использовать трёхслойную архитектуру, для написания игры,...

Трехслойная архитектура. Куда добавить запись в файл?
В рамках обучения делаю задание, в котором нужно реализовать трехслойную архитектуру...

Трехслойная архитектура для ADO NET, возвращение DBNull и мелочи
Здравствуйте. Прочитав эту статью про трехслойную архитектуру доступа к данным, решил уже наконец...

Архитектура. Как лучше реализовать то, что я уже реализовал. Код и проект в теме
Всем привет. Интересует как лучше организовать удаление файлов из вью модели, которая выбрана в...

6
653 / 589 / 171
Регистрация: 17.07.2012
Сообщений: 1,670
Записей в блоге: 1
06.11.2015, 12:31 2
1. Причем здесь трёхслойная архитектура?
2. За что отвечают DAL и Logic?
3. User и Award - разные сущности, хоть и связанные. User должен работать с User, Award - с Award. Зачем тут что наследовать?
0
2 / 2 / 0
Регистрация: 11.05.2015
Сообщений: 45
06.11.2015, 13:24  [ТС] 3
Задача из учебного центра на понимание трехслойной архитектуры, я учусь только.
DAL - Data Access Layer; Logic - это промежуточный слой между консолью (Presentation Layer) и DAL'om.
Т.е. получается, что нужно делать два DAL отдельно для User и отдельно для Award?
0
653 / 589 / 171
Регистрация: 17.07.2012
Сообщений: 1,670
Записей в блоге: 1
06.11.2015, 14:07 4
ResidentEve, Какая-то странная задача на понимание трехслойной архитектуры. И у вас вопрос скорей по проектированию слоёв, чем про саму архитектуру. А если речь идет об интерфейсах/абстракциях, тут уже надо понимать Принцип инверсии зависимостей.

DAL, а именно слой, у вас один, и содержит некоторый классы/интерфейсы для работы с данными. Т.е. ваше утверждение, что нужно делать два DAL - в корне неверно. Сколько классов/интерфейсов делать внутри DAL и что от чего наследовать - это уже относится конкретно к проектированию DAL слоя, которое в свою очередь в основном зависит от способа хранения данных. Вы можете, допустим, иметь два класса в DAL слое, а на BL - один, содержащий User вместе с Awards.
0
2 / 2 / 0
Регистрация: 11.05.2015
Сообщений: 45
06.11.2015, 14:21  [ТС] 5
Да, скорее всего задача именно на понимание проектирования слоев, как Вы и сказали.
Правильно ли я понял, что в моем случае обязательно в DAL нужно добавлять второй класс, который будет работать в Awards? У меня есть в DAL'e сейчас класс UserDAL, получается что он содержит в себе List<User> и List<Awards>. Это неправильно? Нужно ли создавать в DAL'e новый класс AwardDAL и чтобы он хранил в себе только List<Award>, а UserDAL - только List<User>? Или это не обязательно? Мне важно понять, как правильно или понять, можно ли сделать и так и так?
0
653 / 589 / 171
Регистрация: 17.07.2012
Сообщений: 1,670
Записей в блоге: 1
06.11.2015, 14:42 6
Лучший ответ Сообщение было отмечено ResidentEve как решение

Решение

Цитата Сообщение от ResidentEve Посмотреть сообщение
нужно добавлять второй класс, который будет работать в Awards?
Это зависит много от чего: от того, является ли Award сущностью, или, допустим, атрибутом для User; существует ли Award без User и наоборот; есть ли возможность изменять сами классы; об отношении User-Awards; о способе хранения Award. Если Award у вас самостоятельная сущность, имеющая некоторые атрибуты - то да, нужен отдельный класс. Если Award у вас не существует без User, то отдельно List со всеми Award хранить бессмысленно, а User должен содержать в себе Award/коллекцию Awards.
1
2 / 2 / 0
Регистрация: 11.05.2015
Сообщений: 45
06.11.2015, 14:51  [ТС] 7
Более-менее проясняется. Спасибо.
0
06.11.2015, 14:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2015, 14:51
Помогаю со студенческими работами здесь

AJAX правильно ли реализовал?
Доброго времени суток. Написал вот такую универсальную обработку форм. Вопрос к опытным: так как я...

Я стек правильно реализовал?
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; /* run this program using the...

Ребята, подскажите плз. - "WCF" + "plugin" (поддержка плагинов) + "3 Tier Architecture" (трехслойная архитектура)
Ребята, подскажите плз. можно ссылки на рабочий пример: C#: &quot;WCF&quot; + &quot;plugin&quot;(поддержка плагинов)...

Архитектура программы. Правильно ли сделал?
Собствено с архитектурой вроде определился. Хотелось бы конструктивной критики. Задача по сути...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru