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