Я пытаюсь настроить структуру своего приложения в 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 месяцев до года я не пинал себя больше, чем мне нужно.