Tôi đang cố gắng thiết lập cấu trúc ứng dụng của mình trong VS và tôi muốn "thử" và chứng minh tương lai ở mức hợp lý. Ứng dụng này sẽ là bản viết lại WPF của một ứng dụng Winform cũ không tuân theo quy ước nào. Không có lớp, tầng, từ viết tắt, v.v ...
Nó là một ứng dụng doanh nghiệp khá lớn. Tôi đã lên kế hoạch sử dụng Linq To SQL làm DB của mình và rất có thể sẽ luôn là MS SQL. Ngoài ra tôi có một bộ kỹ năng hiện có với nó.
Tôi muốn theo dõi MVVM và DDD tốt nhất có thể nhưng tôi bị lẫn lộn về cấu trúc ứng dụng của mình khi kết hợp những thứ này. Hãy để tôi thử và minh họa với một số ví dụ.
Khi tôi theo MVVM, cấu trúc thư mục của tôi có thể trông như thế này:
Views
Models
ViewModels
Helpers
nhưng làm thế nào điều đó phù hợp với cách tiếp cận phân lớp DDD đơn giản trong đó Cấu trúc dự án của tôi có thể giống như thế này:
MyApp.UI
MyApp.Domain
MyApp.Data
Tôi có đặt Models
trong lớp Miền hay tôi có 3 phiên bản nói Person
? Điều này dẫn đến một câu hỏi khác về việc tôi sẽ đặt Kho lưu trữ và ánh xạ đối tượng DB của mình vào đối tượng miền ở đâu? Tôi sẽ giả sử dữ liệu ...
Views
Tôi nhận được sẽ đi trong UI nhưng ViewModels
cũng sẽ ?
Cuối cùng, tôi sẽ nhúng Logic kinh doanh ở đâu?
Tôi đã tìm thấy những điều sau đây trên CodePlex, ví dụ DDD và nó có ích nhưng dường như là dành cho Ứng dụng web mặc dù điều đó có thể không quan trọng và sự thiếu hiểu biết của tôi tỏa sáng.
Đừng hiểu lầm tôi, tôi biết tôi có thể có nhiều thư mục và gọi chúng bất cứ thứ gì tôi muốn. Tôi đang cố gắng tìm ra nơi để đặt mọi thứ để điều này sẽ có thể mở rộng quy mô, chứ không phải những nơi đó nhất thiết phải được gọi.
Trọng tâm của câu hỏi của tôi có thể được hiển thị như thế này.
Tôi có tblPerson
đối tượng được tạo bởi *.dbml
. Điều này là hiển nhiên và sẽ thuộc về lớp "Dữ liệu" của tôi.
Bây giờ tôi sẽ có Model, DTO, Domain Model hoặc bất cứ thứ gì nó được gọi trong Lớp riêng biệt (dự án?) Được gọi Person
. Tôi sẽ cần một Mapper
cho Person
đến tblPerson
mà tôi không chắc chắn nơi để đặt.
Sau đó, tôi sẽ có một ViewModel, giả sử, EditPerson
nó sẽ có các thuộc tính riêng mà nó lấy từ Person
nhưng có thể nhiều hơn nữa.
Cuối cùng, tôi có một Chế độ xem được ràng buộc với ViewModel đó ....
Để rõ ràng rằng đoạn đó được HOÀN TOÀN với các giả định và phỏng đoán của tôi và tôi hy vọng ai đó sẽ giúp làm sáng tỏ không khí cho tôi hoặc đưa ra những hiểu biết để 6 tháng đến một năm kể từ bây giờ tôi không tự đá mình nhiều hơn tôi cần.