Я пытаюсь настроить структуру своего приложения в VS, и я хочу "попробовать" и в будущем доказать это на разумном уровне. Это приложение будет переписано в WPF старого приложения Winform, которое не соблюдало никаких соглашений. Нет слоев, ярусов, сокращений и т. Д.
Это довольно простое корпоративное приложение. Я планировал использовать Linq To SQL, так как мои БД есть и, скорее всего, всегда будут MS SQL. Также у меня есть существующий набор навыков с ним.
Я хочу следовать MVVM и DDD как можно лучше, но я путаюсь со структурой моего приложения при их объединении. Позвольте мне попытаться проиллюстрировать это несколькими примерами.
Когда я слежу за MVVM, моя структура папок может выглядеть так:
Views
Models
ViewModels
Helpers
но как это вписывается в упрощенный многоуровневый подход DDD, где моя структура проекта может выглядеть следующим образом:
MyApp.UI
MyApp.Domain
MyApp.Data
Я положил Modelsв слой домена или у меня есть 3 версии скажем Person? Это приводит к другому вопросу о том, куда бы я поместил свой репозиторий и сопоставления объекта БД с объектом домена? Я бы предположил, что данные ...
ViewsЯ получил бы пойти в пользовательском интерфейсе, но ViewModelsтакже?
Наконец, где я буду встраивать свою бизнес-логику?
Я нашел следующее в CodePlex, DDD Example , и это помогло, но, похоже, для веб-приложения, хотя это может и не иметь значения, и мое незнание просвечивает.
Не поймите меня неправильно, я знаю, что могу иметь столько папок и называть их, сколько захочу. Я пытаюсь выяснить, где разместить вещи так, чтобы это было масштабируемым, а не как эти места обязательно называются.
Суть моего вопроса может быть показана следующим образом.
У меня есть tblPersonобъект, сгенерированный *.dbml. Это очевидно и будет принадлежать моему слою «данных».
Теперь я бы назвал Model, DTO, Domain Model или как там это называется в отдельном слое (проекте?) Person. Я потребуется Mapperдля Personна tblPersonчто я не уверен , куда девать.
Затем у меня будет ViewModel, скажем, EditPersonс собственными свойствами, из которых он извлекает, Personно, возможно, также и с другими.
Наконец, у меня будет View, связанный с этой ViewModel ....
Чтобы было ясно, что этот параграф заполнен моими предположениями и догадками, я надеюсь, что кто-нибудь поможет мне прояснить ситуацию или предложит свои идеи, чтобы с 6 месяцев до года я не пинал себя больше, чем мне нужно.