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 Modelsdi 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 ...
ViewsSaya akan masuk UI tetapi ViewModelsjuga?
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 tblPersonobjek 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 Mapperuntuk Personuntuk tblPersonitu saya tidak yakin di mana untuk menempatkan.
Lalu, saya akan memiliki ViewModel untuk, katakanlah, EditPersonyang akan memiliki properti sendiri yang menarik Persontetapi 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.