2010-07-06 26 views
5

Tôi khá mới đối với toàn bộ kiến ​​trúc n-tier và tôi đã có một số câu hỏi về cách sử dụng MVVM với ứng dụng 3 tầng.WPF - Nơi đặt DAL trong thiết kế kiến ​​trúc 3 tầng với MVVM?

Từ hiểu biết của tôi, chúng ta có:

  • The View, hoặc lớp UI, đó là tập tin XAML
  • Mô hình, mà là một lớp tùy chỉnh chứa các thuộc tính và phương pháp mà "mô hình" dữ liệu đối tượng
  • ViewModel, đó là "bộ chuyển đổi" giữa View và Model
  • Một WCF server mà là nghĩa vụ phải xử lý cơ sở dữ liệu truy cập trong số những thứ khác
  • SQL Database để lưu trữ dữ liệu

Câu hỏi của tôi là, làm thế nào để tôi kết hợp tất cả với nhau bằng cách sử dụng Lớp truy cập dữ liệu? Với MVVM, tôi sẽ có các mô hình chứa các phương thức để tải/Cập nhật bản thân. Thay vào đó nên điều này xảy ra trên WCF Server? Nếu vậy, nên tham chiếu đến máy chủ được lưu trữ trong Model hoặc ViewModel? Và nó nên được gọi như thế nào?

Trả lời

8

Nghiêm ngặt, DAL không phải là một phần của mẫu MVVM. và xem mô hình sẽ không biết gì về DAL.

Ví dụ: hiển thị các thực thể dưới dạng thuộc tính của mô hình được tải tại lần truy cập đầu tiên

public class ProductListModel 
{ 
    public List<Product> AllProducts 
    { 
     get 
     { 
      if (_AllProducts == null) 
       _AllProducts = MyServiceProxy.LoadAllProducts(...) 
      return _AllProducts; 
     } 
    } 

    public void SaveChanges() 
    { 
     if (_AllProducts != null) 
      MyServiceProxy.SaveProducts(AllProducts); 
    } 
} 
+0

Cảm ơn bạn, mà làm sáng tỏ nó cho tôi – Rachel

0

Truy cập dữ liệu là vấn đề riêng biệt và độc lập ... Bạn có thể triển khai theo một số cách và mẫu khác nhau, nhưng trong mọi trường hợp, kết quả cuối cùng là mô hình sẽ được sử dụng bởi các lớp MVVM của bạn.
WCF có thể trả về các lớp được sử dụng trong mô hình của bạn, hoặc nó có thể trả về các lớp đơn giản được thiết kế giống như các đối tượng truyền dữ liệu, trong đó cxase bạn sẽ chuyển đổi các đối tượng này thành các thể hiện của các lớp được định nghĩa trong mô hình của bạn ...
Truy cập dữ liệu thực tế (đến-từ chính DataBase tất nhiên được mã hóa ở phía máy chủ của WCF ...

Các vấn đề liên quan