Lăng kính cho WPF là gì?


137

Gần đây tôi đã bắt gặp một thứ gọi là Prism rất nhiều. Microsoft, người điều hành dự án, mô tả nó như là

Hướng dẫn cho các ứng dụng tổng hợp trong WPF và Silverlight.

Ngay cả sau khi đọc các mô tả chi tiết hơn ngoài kia, tôi không có manh mối gì về việc nó thực sự là gì, tôi sợ.

Tôi hy vọng ở đây rằng ai đó có thể cho tôi một lời giải thích ngắn gọn rõ ràng về Prism thực sự là gì và tại sao tôi nên tìm hiểu nó. Tôi đã là một nhà phát triển WPF được vài năm nay, đã sử dụng MVVM chia sẻ công bằng của tôi và gần đây tôi đã gặp những người sử dụng Prism, nhưng cá nhân tôi cảm thấy hơi lạc lõng ở đây.

Cụ thể, tôi đang tự hỏi về những điểm sau:

  • Prism theo nghĩa đen chỉ là (hoặc chủ yếu) một tập sách, như được đưa ra trên trang web MSDN ? Có bao gồm bất kỳ thư viện, nếu vậy cho chính xác những gì?

  • Prism có phải là một khung MVVM không? Tôi có nên sử dụng nó làm "khung công tác MVVM chính thức của Microsoft" cho những người khác ngoài kia hay của riêng tôi không?

  • Nó cung cấp tiêm phụ thuộc? Liệu nó có liên quan đến MEF theo cách này?

  • Bất cứ điều gì khác tôi nên biết về những gì Prism làm, với tư cách là nhà phát triển WPF / Silverlight.


5
Đây thực sự cũng là một điều khá phức tạp - Prism cố gắng đáp ứng nhiều nhu cầu, vì vậy thật khó để có được một câu trả lời "đúng" nếu bạn đang cố gắng tìm ra mục đích của nó. Nó thực sự làm nhiều việc.
Sậy Copsey

1
Câu hỏi tương tự mà tôi đặt ra cũng đang có một số câu trả lời hay cho câu hỏi này - stackoverflow.com/questions/6251821/iêu
akjoshi

9
một vũng lầy âm u khác từ P & P. Mỗi lần họ phát hành thứ gì đó như thế này, tôi thấy mình phải vào SO hoặc wikipedia để tìm hiểu xem thứ đó thực sự là gì. Tại sao nó luôn luôn phải khó hiểu như vậy?
Adam Ralph

1
nếu bạn thích, đây là một loại tài liệu hướng dẫn bạn cách triển khai mẫu MVVM trong các ứng dụng WPF / Silverlight của bạn. đó cũng là một thư viện từ codePlex mà tôi không chắc nó chính xác để làm gì. một tài liệu tốt về PRISM nằm trong liên kết bên dưới, đáng để xem qua: Prism 4.1 - Hướng dẫn của nhà phát triển về Microsoft Prism - MSDN
user3353518

Câu trả lời:


92

Prism là hướng dẫn chính thức của Nhóm Mô hình và Thực hành Microsoft để xây dựng "ứng dụng tổng hợp" trong WPF và Silverlight.

Nó nhằm mục đích cung cấp hướng dẫn về các thực tiễn tốt nhất để xây dựng các ứng dụng quy mô lớn, linh hoạt về phát triển và khả năng bảo trì.

Điều này bao gồm hướng dẫn về nội xạ phụ thuộc (thông qua Unity hoặc MEF), bố cục (bao gồm sử dụng MVVM), xử lý sự kiện tổng hợp, v.v.


Prism theo nghĩa đen chỉ là (hoặc chủ yếu) một tập sách, như được đưa ra trên trang web MSDN? Có bao gồm bất kỳ thư viện, nếu vậy cho chính xác những gì?

Đó là một cuốn sách, nhưng cũng bao gồm các thư viện hỗ trợ (trên trang GitHub ).

Prism có phải là một khung MVVM không? Tôi có nên sử dụng nó làm "khung công tác MVVM chính thức của Microsoft" cho những người khác ngoài kia hay của riêng tôi không?

Có và không. Nó bao gồm hướng dẫn sử dụng MVVM, nhưng xa hơn một khung công tác MVVM. Về bản chất, nó thực sự không phải là một "khung công tác MVVM" - mặc dù nó bao gồm hướng dẫn MVVM.

Nó cung cấp tiêm phụ thuộc? Liệu nó có liên quan đến MEF theo cách này?

Đúng. Ban đầu nó bao gồm Unity, nhưng bản phát hành mới nhất bao gồm sử dụng MEF cho DI.

Bất cứ điều gì khác tôi nên biết về những gì Prism làm, với tư cách là nhà phát triển WPF / Silverlight.

Thật đáng để xem cách họ làm việc. Họ có một khái niệm "khu vực" rất công phu, cũng như hỗ trợ tổng hợp sự kiện tốt. Nó cũng bao gồm các thực tiễn tốt để phát triển chống lại WPF, Silverlight và Windows Phone một cách đồng thời.


1
Cảm ơn vi đa trả lơi. Điều này cho tôi một cái nhìn tổng quan tốt tôi nghĩ. Nói rõ hơn: có thực sự có mã liên quan đến MVVM hay DLL thư viện không?
Noldorin

4
@Noldorin: Tôi giả sử bạn hỏi về bên trong Lăng kính ... Có một số hỗ trợ cho MVVM, nhưng thật lòng mà nói, MVVM, như một mô hình, hầu như không cần hỗ trợ thư viện. Prism có đối tượng thông báo tốt và hỗ trợ chỉ huy, đây thực sự là thứ duy nhất còn thiếu trong BCL mà bạn thực sự cần cho MVVM. Nó cũng có hỗ trợ định vị dịch vụ, giúp nếu bạn muốn sử dụng DI / dịch vụ chia sẻ cho VM <-> VM giao tiếp. Nó không có một số nội dung "phụ" được cung cấp bởi một số "khung" MVVM, chẳng hạn như khung nhắn tin, v.v.
Reed Copsey

1
Để làm theo hướng dẫn của Prism, bắt buộc các thư viện đã được cài đặt chưa?
dios231

18

Đó là một khuôn khổ để xây dựng các ứng dụng WPF và Silverlight.

http://compositewpf.codeplex.com/

Nó từng được gọi là "Lăng kính" trước khi Microsoft đổi tên thành "CompositeWPF."

Đáp án:

1) Lăng kính là một khung MVVM để sử dụng làm nền tảng cho các ứng dụng của bạn

2) Tôi đề nghị như vậy tùy thuộc vào yêu cầu cụ thể của bạn. Bạn nên đăng một câu hỏi khác với các chi tiết cụ thể để bạn có thể nhận được một số câu trả lời cụ thể.

3) Lăng kính sử dụng phép tiêm phụ thuộc (Unity) nhưng không "cung cấp" cho nó

4) Imo, Prism cung cấp rất nhiều chức năng nhưng nặng về đường cong học tập. Đối với các dự án nhỏ với bạn là nhà phát triển duy nhất, bạn có thể không cần sự trừu tượng và các công cụ mà nó cung cấp.


3
Tôi hơi không đồng ý với tuyên bố số 1 của bạn - Lăng kính bao gồm hướng dẫn MVVM, nhưng RẤT NHIỀU hướng dẫn (hầu hết các mẫu) hoàn toàn không phải là MVVM. Nó được trình bày nhiều hơn dưới dạng một tùy chọn có thể được sử dụng khi xây dựng các ứng dụng tổng hợp.
Sậy Copsey

1
Tôi đoán rằng tôi đã luôn sử dụng với mẫu MVVM
rboarman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.