2011-01-20 35 views
39

Tôi hơi lỗi thời trong WPF ngay bây giờ và sẽ quan tâm đến ý kiến ​​của mọi người về phiên bản Prism mới nhất (mà tôi đã sử dụng một vài phiên bản trước) và phương pháp tiếp cận MVVM Light + Unity (mà tôi có không bao giờ được thực hiện - ví dụ về URL sẽ tốt).MVVM Light + Unity hoặc Prism?

Dự án của tôi sẽ là một dự án lớn bao gồm nhiều mô-đun được viết bởi nhiều nhà phát triển. Ngoài ra còn có các quỹ để mang lại một bộ điều khiển bên thứ 3 để thiết lập một không gian làm việc tốt đẹp bằng cách sử dụng một trong những nhà quản lý bố trí Docking/Workspace ưa thích trên đó (và tôi biết một số chơi tốt hơn với các vùng Prism hơn những người khác).

Nếu bạn đang bắt đầu một dự án từ đầu ngay bây giờ, bạn sẽ làm gì với và tại sao? Chi tiết về các mẫu kiến ​​trúc được đề xuất cụ thể sẽ hữu ích (ví dụ: tự động phát hiện các tệp mô-đun? Tiêm dịch vụ ghi nhật ký?). Về cơ bản, mọi suy nghĩ và lời khuyên sẽ tốt. Tôi muốn có một cuộc thảo luận tốt. Có lẽ có một hướng khác hoàn toàn mà bạn sẽ đề nghị đi vào? Tôi rất nhiều trong giai đoạn nghiên cứu và muốn có nhiều đầu vào nhất có thể.

Tôi đặt nó vào đây vì tôi nghĩ rằng nó sẽ có ít quan điểm sai lệch hơn so với các diễn đàn Prism/MVVM Light nhưng, nếu có một nơi phù hợp hơn cho câu hỏi này, hãy chỉ cho tôi theo hướng đó.

Trả lời

55

Nếu bạn cần mô đun, bạn muốn xem Prism. Prism có một số yếu tố có thể giúp bạn với MVVM (DelegateCommand và CompositeCommand, chẳng hạn), nhưng tôi nghĩ nó hoàn chỉnh hơn với một khung MVVM khác.

Có một câu hỏi cách đây vài ngày về cách mô hình hóa lăng kính. Kiểm tra xem có giải thích chi tiết về cách xem xét chức năng của Prism không. High Level Modelling Advice for Prism MVVM

Unity là triển khai đảo ngược vùng chứa kiểm soát và chắc chắn là tốt, nhưng Prism có khả năng sử dụng các vùng chứa khác. Nó có hỗ trợ dựng sẵn cho MEF (mà, lần lượt, được xây dựng trong .NET 4.0), nhưng nó không phải là lựa chọn duy nhất của bạn. Hãy xem một số mẫu có trong Prism và quyết định cách tiếp cận nào bạn thích hơn. Unity không tự hoàn thiện cho giao diện người dùng theo ý kiến ​​của tôi. MEF có thể là một sự lựa chọn gần hơn nếu bạn muốn cố gắng tổng hợp một giao diện người dùng bằng phương pháp tiếp cận MVVM Framework + IoC Framework.

Ánh sáng MVVM thực sự là một khung miễn phí cho Prism. khung MVVM khác để xem xét:

  • MVVM Foundation (rất nhẹ ... tốt cho các dự án nhỏ)
  • Caliburn (khuôn khổ rất mạnh mẽ)
  • Caliburn Micro (cổ phiếu một tên và một tác giả từ Caliburn, nhưng nó giống như MVVM Light với một số quy ước tuyệt vời)
  • ReactiveUI (trước đây là "ReactiveXAML". Đây là một chút của bộ não, nhưng nếu bạn học phần mở rộng phản ứng cho .NET (Rx), khung này thật đơn giản ... theo ý kiến ​​của tôi.)

Nếu tôi định bắt đầu một dự án mới: Tôi sẽ đi với Prism và ReactiveUI. Lăng kính bởi vì bạn phải có mô đun với các dự án lớn và tôi thích khả năng loại bỏ và thêm các đơn vị chức năng lớn vào ứng dụng bằng cách xóa hoặc thêm các tệp DLL (và bạn không phải triển khai tính năng phát hiện DLL như bạn sẽ chỉ với cách tiếp cận IoC + MVVM). Dễ kiểm tra hơn, dễ debug hơn, dễ phát triển hơn. Nice tất cả xung quanh.

ReactiveUI vì với lập trình UI vào những ngày này, phần lớn thời gian của bạn được dành để quản lý thời gian của bạn trên chuỗi giao diện người dùng. Chặn là không có ... người dùng không muốn thấy đóng băng giao diện người dùng; họ muốn thấy biểu tượng chờ GIF động quay để họ biết họ có thể làm việc trên một thứ khác trong khi dữ liệu của bạn đang tải. Ngoài ra, rất nhiều ứng dụng giá trị cung cấp những ngày này đang lấy dữ liệu từ các hệ thống khác nhau và đặt chúng lại với nhau trong giao diện người dùng ... không chỉ bạn sẽ cần một hệ thống tổng hợp tốt (Prism), nhưng bạn cũng sẽ cần một khung MVVM tốt xử lý các hoạt động không đồng bộ như bánh mì và bơ của nó ... ReactiveUI là nó.

+0

Xin lỗi vì đã trả lời chậm, điều này đột nhiên có một dự án khác được ưu tiên và điều này đã bị đẩy vào tâm trí tôi. Phản hồi rất hữu ích, tôi sẽ xem xét các chủ đề và khung công tác khác mà bạn đã chỉ cho tôi. – David

+0

Tôi khuyên bạn nên kiểm tra MEF cho Silverlight và add-on hoặc thay thế cho các khía cạnh sáng tác của Prism. –

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