Saya mencoba mengatur struktur aplikasi saya di VS dan saya ingin "mencoba" dan membuktikannya di masa depan ke tingkat yang masuk akal. Aplikasi ini akan menjadi WPF menulis ulang aplikasi Winform lama yang tidak mengikuti konvensi. Tidak Ada Lapisan, Tingkatan, Akronim, dll ...
Ini adalah Aplikasi Perusahaan yang cukup besar. Saya berencana untuk menggunakan Linq To SQL sebagai DB saya dan kemungkinan besar akan selalu menjadi MS SQL. Juga saya memiliki keahlian yang ada dengannya.
Saya ingin mengikuti MVVM dan DDD semampu saya, tetapi saya bingung dengan struktur aplikasi saya saat menggabungkan ini. Biarkan saya coba dan ilustrasikan dengan beberapa contoh.
Ketika saya mengikuti MVVM, struktur folder saya mungkin terlihat seperti ini:
Views
Models
ViewModels
Helpers
tetapi bagaimana hal itu cocok dengan pendekatan berlapis DDD sederhana di mana Struktur Proyek saya mungkin menyerupai ini:
MyApp.UI
MyApp.Domain
MyApp.Data
Apakah saya meletakkan Models
di lapisan Domain atau apakah saya memiliki 3 versi mengatakan Person
? Ini mengarah ke pertanyaan lain di mana saya akan meletakkan Repositori dan pemetaan Obyek DB ke Objek Domain? Saya akan menganggap data ...
Views
Saya akan masuk UI tetapi ViewModels
juga?
Akhirnya, di mana saya akan menanamkan Logika Bisnis saya?
Saya menemukan yang berikut ini pada CodePlex, Contoh DDD , dan itu sudah membantu tetapi tampaknya untuk Aplikasi Web meskipun itu mungkin tidak masalah dan ketidaktahuan saya bersinar melalui.
Jangan salah paham, saya tahu saya dapat memiliki banyak folder dan memanggilnya apa pun yang saya inginkan. Saya mencoba untuk mencari tahu di mana harus menempatkan sesuatu sehingga ini akan menjadi skala, bukan apa tempat itu seharusnya disebut.
Inti dari pertanyaan saya mungkin ditampilkan seperti ini.
Saya memiliki tblPerson
objek yang dihasilkan oleh *.dbml
. Ini jelas dan akan berada di lapisan "Data" saya.
Sekarang saya akan memiliki Model, DTO, Model Domain, atau apa pun namanya dalam Layer terpisah (proyek?) Disebut Person
. Saya akan membutuhkan Mapper
untuk Person
untuk tblPerson
itu saya tidak yakin di mana untuk menempatkan.
Lalu, saya akan memiliki ViewModel untuk, katakanlah, EditPerson
yang akan memiliki properti sendiri yang menarik Person
tetapi mungkin lebih banyak juga.
Akhirnya saya memiliki View yang terikat dengan ViewModel itu ....
Supaya jelas bahwa paragraf DIISI dengan asumsi dan tebakan saya dan saya berharap seseorang akan membantu membersihkan udara bagi saya atau menawarkan wawasan di sana sehingga 6 bulan hingga satu tahun dari sekarang saya tidak menendang diri sendiri lebih dari yang saya butuhkan.