http://i.stack.imgur.com/YZXZN.png (я в настоящее время не допускается вставлять изображения)Архитектурный анализ помощь для нового проекта
Я мог бы реально использовать некоторую помощь с моей модели класса выше. Мне стыдно сказать, что я был одним из тех «тех» разработчиков, которые изучали объектную ориентацию в университете, написали экзамены, занимались ими, но потом никогда не устанавливали принципы в моем коде реального мира. Я никогда не садился и не рассматривал свой дизайн приложения, прежде чем начинать его кодификацию. Таким образом, мои навыки проектирования и кодирования медленно умирают и застаиваются под тяжестью разработки и обслуживания монолитных унаследованных банковских приложений. После нескольких лет я решил, что это определенно время для перемен! Я глубоко погружался в мир шаблонов дизайна, DDD, NoSQL, DI и т. Д. Последние две недели были для меня очень напряженным опытом, и порой я думаю, что меня почти довели до слез на огромном объеме передовых методов и технологий, которые я пропустил, работая в крупных корпорациях и банках. Я просто не мог поверить, насколько я был удален от ультрасовременных технологий и хороших подходов к дизайну так долго, и внезапное падение всего грозило отправить меня в состояние кодирования паралича! Я просто не мог начать кодирование, поскольку я чувствовал, что мой дизайн нуждается в большей настройке, или мне нужно больше учиться по определенной теме. Достаточно достаточно, и мне нужно взломать и, по крайней мере, сделать первую итерацию проекта.
Во всяком случае, достаточно драмы, на мой вопрос:
Я начал работу над созданием модели для моей игры в гольф приложения. Желая немного придерживаться DDD и также желая использовать NoSQL (RavenDB), я задал следующие требования.
- Мой стек платформы Windows/IIS/MVC 3.0/RavenDB
- мне нужно найти свои агрегатные корни! Я решил определить их как единственные элементы в моей системе, которые могут оставаться в своем собственном праве. Все остальное я просто считал «подкомпонентом» агрегатов. Обратите внимание, что никакого реального поведения пока не определено.
- Мои общие корни будут единственными классами, которые действительно сохраняются в моем хранилище документов RavenDB, и они будут сохраняться «как есть». Наличие больших древовидных структур классов представляется лучшим сценарием для RavenDB с точки зрения преимуществ производительности.
- Я не чувствую необходимости в слое репозитория (следил за некоторыми сообщениями Айенде), так как API RavenDB чувствует себя свободно и довольно легко. Я буду просто открывать и закрывать сеансы с помощью атрибутов пользовательских действий на моих контроллерах, где это необходимо. Я видел, что без тестирования уровня хранилища может быть сложно, но, конечно же, я должен просто издеваться над некоторыми объектами домена «в памяти»?
- Запись в БД произойдет в отдельном сервисном слое
- В какой-то момент я остановился и спросил себя: «Где я собираюсь поместить свое поведение в домен?». Общий консенсус от поиска в Интернете, по-видимому, указывает, что я должен оставить свой домен (сущности) лишенным какого-либо поведения (бизнес-логики) и все это обработать на моем уровне обслуживания. Но после прочтения какого-то Эрика Эванса, я убежден, что такое поведение моего домена должно существовать прямо там ... в домене!
Вопросы - Как добросовестный нуб в области DDD и архитектурного проектирования, я по крайней мере, на правильном пути, или я, предназначенный для уничтожения? - Любые мысли, предостережения, конструктивная критика и понимание вышеизложенного получили бы большую оценку!
Кто сказал, что в домене не должно быть поведения? Серьезно, откуда это происходит, потому что я все время слышу, но я никогда не видел, чтобы какие-либо хорошо зарекомендовавшие себя разработчики или книги говорили об этом? Чтобы помочь вам/запутать вас дальше, пожалуйста, посмотрите мой блог на эту тему: http://lucidcoding.blogspot.co.uk/ –