2010-08-30 41 views
7

Tôi dự định viết một ứng dụng WPF theo mẫu MVVM lần đầu tiên nhưng có điều gì đó không rõ ràng đối với tôi. Hãy nói rằng khung nhìn có một nút "Save" và khi đó là nhấn Tôi cần phải lưu trạng thái hiện tại của dữ liệu của tôi (mô hình). Điều này sẽ được thực hiện bằng cách gửi một thông báo SOAP đến một dịch vụ SOAP.Lớp dịch vụ WPF MVVM

Vị trí trong thiết lập MVVM của tôi thực hiện các trình xử lý yêu cầu/phản hồi SOAP này? Mô hình khung nhìn có làm cho SOAP gọi chính nó bất cứ khi nào nút lưu được nhấn không? Mô hình xem có nên thông báo cho mô hình để tự lưu thay thế không? Có lẽ đó là một số cách khác, hoàn toàn tách biệt với MVVM?

Suy nghĩ của tôi là (ít nhất trong trường hợp cụ thể này) mô hình khung sẽ xử lý vì nó cần vô hiệu hóa nút lưu trong giao diện cho đến khi yêu cầu lưu hiện tại hoàn thành.

+0

Tôi bắt đầu viết một câu trả lời và sau đó tự nói chuyện với mình và +1 thay thế. Bản năng của tôi là Model nên xử lý nó, vì hầu hết các ViewModels sử dụng một DataContext của Model, nhưng điều này không thực sự cập nhật Model, mà là một cái gì đó bên ngoài Model đó ... –

Trả lời

5

Tôi thường đặt lớp ứng dụng/lớp kinh doanh hợp lý giữa chế độ xem mô hình và lớp SOAP/WCF/Webservice. Lớp này là nơi mà tất cả logic nghiệp vụ không xem và logic xử lý tồn tại. Hãy nhớ rằng, mô hình chế độ xem là mô hình của chế độ xem, không phải là mô hình của miền. Do đó, bạn muốn tắt điều khiển cho lớp tiếp theo xuống càng sớm càng tốt.

Trong trường hợp này, tôi sẽ có chế độ xem kích hoạt lệnh lưu trên mô hình chế độ xem, lần lượt sẽ chuyển sang lớp ứng dụng, lần lượt thực hiện bất kỳ cuộc gọi nào đến dịch vụ từ xa.

4

ViewModel, không được thực hiện thao tác như vậy. Nó chỉ nên kích hoạt nó. Do đó, mô hình phải làm điều đó (hoặc một lớp trung gian khác chịu trách nhiệm cho các hoạt động tải và lưu, nhưng không phải chính bản thân ViewModel).

ViewModel có thể quan sát hoạt động lưu và có thể cung cấp thông tin trạng thái về tiến trình cho Chế độ xem.

0

Tôi sẽ tạo trình xử lý dịch vụ có thể truy cập bằng ViewModel. Chuyển thông tin này vào hàm tạo của viewmodel và gọi các phương thức được trình xử lý dịch vụ tiếp xúc.