Usiłuję skonfigurować strukturę mojej aplikacji w VS i chcę „wypróbować” i w przyszłości udowodnić to na rozsądnym poziomie. Ta aplikacja będzie przepisem WPF starej aplikacji Winform, która nie przestrzegała żadnych konwencji. Bez warstw, poziomów, akronimów itp.
Jest to dość duża aplikacja dla przedsiębiorstw. Planowałem użyć Linq To SQL, ponieważ moje DB są i najprawdopodobniej zawsze będą MS SQL. Mam też istniejący zestaw umiejętności.
Chcę śledzić MVVM i DDD najlepiej jak potrafię, ale łączę je myląc się ze strukturą mojej aplikacji. Pozwól mi spróbować zilustrować kilkoma przykładami.
Gdy śledzę MVVM, moja struktura folderów może wyglądać następująco:
Views
Models
ViewModels
Helpers
ale jak to pasuje do uproszczonego podejścia warstwowego DDD, w którym moja struktura projektu może przypominać to:
MyApp.UI
MyApp.Domain
MyApp.Data
Czy mogę umieścić Models
warstwę domeny, czy mam 3 wersje powiedz Person
? Prowadzi to do kolejnego pytania, gdzie chciałbym umieścić moje repozytorium i odwzorowania obiektu DB na obiekt Domain? Zakładam, że dane ...
Views
Dostanę przejść w interfejsie użytkownika, ale ViewModels
też?
Wreszcie, gdzie miałbym osadzić moją logikę biznesową?
Znalazłem następujące informacje na CodePlex, przykład DDD , i była to pewna pomoc, ale wydaje się, że jest przeznaczona dla aplikacji sieci Web, choć może to nie mieć znaczenia i przejawia się moja ignorancja.
Nie zrozum mnie źle, wiem, że mogę mieć tyle folderów i dzwonić do nich, jak tylko chcę. Próbuję dowiedzieć się, gdzie umieścić rzeczy, aby można je było skalować, a nie to, co niekoniecznie nazywają te miejsca.
Serce mojego pytania może być pokazane w ten sposób.
Mam tblPerson
obiekt wygenerowany przez *.dbml
. Jest to oczywiste i należałoby do mojej warstwy „Dane”.
Teraz miałbym Model, DTO, Model domeny lub jakkolwiek to się nazywa w osobnej warstwie (projekcie?) Person
. Ja potrzebuję Mapper
do Person
celu tblPerson
, że nie jestem pewien gdzie umieścić.
Potem będę miał ViewModel, na przykład, EditPerson
który miałby swoje własne właściwości, z których pobiera, Person
ale być może również więcej.
Wreszcie miałbym widok związany z tym ViewModel ....
Aby wyjaśnić, że akapit jest wypełniony moimi założeniami i domysłami, mam nadzieję, że ktoś pomoże mi oczyścić powietrze lub zaoferować wgląd, aby za 6 miesięcy do roku nie kopać się bardziej niż potrzebuję.