ปริซึมสำหรับ WPF คืออะไร


137

ฉันเจอสิ่งที่เรียกว่าปริซึมเร็ว ๆ นี้ Microsoft ผู้ดำเนินโครงการอธิบายว่า

แนวทางสำหรับการใช้งานคอมโพสิตใน WPF และ Silverlight

แม้หลังจากอ่านคำอธิบายโดยละเอียดแล้วฉันก็ยังไม่รู้ว่ามันเกี่ยวกับอะไร แต่ฉันก็กลัว

ฉันหวังว่าที่นี่ใครบางคนสามารถให้คำอธิบายสั้น ๆ ที่ชัดเจนเกี่ยวกับสิ่งที่เป็นจริงปริซึมและทำไมฉันควรเรียนรู้มัน ตอนนี้ฉันเป็นนักพัฒนา WPF มาสองสามปีแล้วใช้ MVVM ที่ฉันมีร่วมกับผู้อื่นและได้พบกับคนที่ใช้ Prism เมื่อเร็ว ๆ นี้ แต่โดยส่วนตัวแล้วฉันรู้สึกไม่ค่อยดีนักที่นี่

โดยเฉพาะอย่างยิ่งฉันสงสัยเกี่ยวกับประเด็นต่อไปนี้:

  • ปริซึมเป็นเพียงหนังสือ (หรือส่วนใหญ่) ตามที่กำหนดไว้ในเว็บไซต์ MSDNหรือไม่? มันรวมไลบรารีใด ๆ หรือไม่ถ้าใช่เพื่ออะไร

  • ปริซึมเป็นกรอบ MVVM หรือไม่? ฉันควรจะใช้มันเป็น "กรอบงานอย่างเป็นทางการของ Microsoft MVVM" เหนือผู้อื่นที่นั่นหรือของฉันเองหรือไม่?

  • มันให้ฉีดพึ่งพา? มันเกี่ยวข้องกับ MEF ด้วยวิธีนี้หรือไม่?

  • สิ่งใดที่ฉันควรรู้เกี่ยวกับสิ่งที่ Prism ทำในฐานะนักพัฒนา WPF / Silverlight


5
จริง ๆ แล้วมันเป็นสิ่งที่ค่อนข้างซับซ้อนเช่นกัน - ปริซึมพยายามเติมเต็มความต้องการจำนวนมากดังนั้นจึงเป็นเรื่องยากที่จะได้คำตอบเดียว "ถูก" ถ้าคุณพยายามหาจุดประสงค์ มันทำหลายสิ่งหลายอย่างจริงๆ
รี้ Copsey

1
คำถามที่คล้ายกันนี้ถามโดยฉันยังมีคำตอบที่ดีสำหรับคำถามนี้ - stackoverflow.com/questions/6251821//
Akjoshi

9
อีกหล่มมืดมัวจาก P&P ทุกครั้งที่พวกเขาปล่อยอะไรแบบนี้ฉันพบว่าตัวเองต้องไปที่ SO หรือวิกิพีเดียเพื่อค้นหาว่ามันคืออะไรจริง ๆ ทำไมมันต้องเป็นความลับเสมอ?
Adam Ralph

1
หากคุณต้องการมันเป็นเอกสารประเภทหนึ่งที่จะแนะนำวิธีการใช้รูปแบบ MVVM ในแอปพลิเคชัน WPF / Silverlight ของคุณ นอกจากนี้ยังมีห้องสมุดจาก codePlex ซึ่งฉันไม่แน่ใจว่ามันคืออะไร เอกสารที่ดีเกี่ยวกับลิงค์ PRISM มีชีวิตอยู่ในลิงค์ด้านล่างมันคุ้มค่าถ้าได้ดู: ปริซึม 4.1 - คู่มือนักพัฒนาเพื่อ Microsoft ปริซึม - MSDN
user3353518

คำตอบ:


92

Prism เป็นคำแนะนำอย่างเป็นทางการของทีม Microsoft Patterns and Practicesสำหรับการสร้าง "คอมโพสิตแอปพลิเคชัน" ใน WPF และ Silverlight

มันมีวัตถุประสงค์เพื่อให้คำแนะนำเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดสำหรับการสร้างแอปพลิเคชันขนาดใหญ่ซึ่งมีความยืดหยุ่นในแง่ของการพัฒนาและการบำรุงรักษา

ซึ่งรวมถึงคำแนะนำในการฉีดพึ่งพา (ผ่าน Unity หรือ MEF) เลย์เอาต์ (รวมถึงการใช้ MVVM) การจัดการเหตุการณ์แบบรวม ฯลฯ


ปริซึมเป็นเพียงหนังสือ (หรือส่วนใหญ่) ตามที่กำหนดไว้ในเว็บไซต์ MSDN หรือไม่? มันรวมถึงห้องสมุดใด ๆ หรือไม่ถ้าใช่เพื่ออะไร

มันเป็นหนังสือ แต่ยังรวมถึงห้องสมุดที่ให้การสนับสนุน (บนเว็บไซต์GitHub )

ปริซึมเป็นกรอบ MVVM หรือไม่? ฉันควรจะใช้มันเป็น "กรอบงานอย่างเป็นทางการของ Microsoft MVVM" เหนือผู้อื่นที่นั่นหรือของฉันเองหรือไม่?

ใช่และไม่. มันมีคำแนะนำสำหรับการใช้ MVVM แต่ไกลเกินกว่ากรอบ MVVM มันไม่ได้จริงๆในตัวของมันเอง "กรอบ MVVM" - แม้ว่ามันจะรวมถึงแนวทาง MVVM

มันให้ฉีดพึ่งพา? มันเกี่ยวข้องกับ MEF ด้วยวิธีนี้หรือไม่?

ใช่. แต่เดิมรวม Unity แต่รุ่นล่าสุดรวมถึงการใช้ MEF สำหรับ DI

สิ่งใดที่ฉันควรรู้เกี่ยวกับสิ่งที่ Prism ทำในฐานะนักพัฒนา WPF / Silverlight

มันคุ้มค่าที่จะดูว่าพวกเขาทำสิ่งต่าง ๆ อย่างไร พวกเขามีแนวคิด "ภูมิภาค" ที่ซับซ้อนมากรวมถึงการสนับสนุนการรวมเหตุการณ์ที่ดี นอกจากนี้ยังมีแนวปฏิบัติที่ดีสำหรับการพัฒนากับ WPF, Silverlight และ Windows Phone พร้อมกัน


1
ขอบคุณสำหรับการตอบกลับ. นี่เป็นภาพรวมที่ดีที่ฉันคิด เพื่อให้ชัดเจน: มีรหัสที่เกี่ยวข้องกับ MVVM หรือไลบรารี DLL หรือไม่
Noldorin

4
@Noldorin: ฉันสมมติว่าคุณถามเกี่ยวกับด้านในของ Prism ... มีการสนับสนุน MVVM อยู่บ้าง แต่ตรงไปตรงมา MVVM เป็นรูปแบบที่แทบจะไม่ต้องการการสนับสนุนห้องสมุดเลย ปริซึมมีวัตถุการแจ้งเตือนที่ดีและการสนับสนุนผู้บังคับบัญชาซึ่งเป็นสิ่งเดียวที่ขาดหายไปใน BCL ที่คุณต้องการสำหรับ MVVM นอกจากนี้ยังมีการสนับสนุนตัวระบุตำแหน่งบริการซึ่งช่วยถ้าคุณต้องการใช้ DI / shared services สำหรับการสื่อสาร VM <-> VM ไม่มีสิ่ง "พิเศษ" บางอย่างที่จัดทำโดยกรอบงาน MVVM "เช่นเฟรมเวิร์กการส่งข้อความและอื่น ๆ
Reed Copsey

1
ในการปฏิบัติตามคำแนะนำปริซึมจำเป็นต้องติดตั้งห้องสมุดหรือไม่
dios231

18

มันเป็นกรอบสำหรับการสร้างแอป WPF และ Silverlight

http://compositewpf.codeplex.com/

ซึ่งเคยถูกเรียกว่า "Prism" ก่อนที่ Microsoft จะเปลี่ยนชื่อเป็น "CompositeWPF"

คำตอบ:

1) Prism เป็นเฟรมเวิร์ก MVVM เพื่อใช้เป็นพื้นฐานสำหรับแอปพลิเคชันของคุณ

2) ฉันแนะนำขึ้นอยู่กับความต้องการเฉพาะของคุณ คุณควรโพสต์คำถามอื่นพร้อมรายละเอียดเฉพาะเพื่อให้คุณได้รับคำตอบเฉพาะ

3) ปริซึมใช้การฉีดแบบพึ่งพา (Unity) แต่ไม่ได้ "ให้"

4) Imo, Prism ให้ฟังก์ชั่นมากมาย แต่เน้นหนักในช่วงการเรียนรู้ สำหรับโครงการขนาดเล็กที่มีคุณเป็นผู้พัฒนาเพียงผู้เดียวคุณอาจไม่ต้องการสิ่งที่เป็นนามธรรมและเครื่องมือที่มีให้


3
ฉันไม่เห็นด้วยกับข้อความที่คุณ # 1 - ปริซึมรวมถึงแนวทาง MVVM แต่คำแนะนำจำนวนมาก (ตัวอย่างส่วนใหญ่) ไม่ใช่ MVVM เลย มีการนำเสนอมากกว่าหนึ่งตัวเลือกที่สามารถใช้เมื่อสร้างแอปพลิเคชันแบบรวม
รี้ Copsey

1
ฉันเดาว่าฉันมักจะใช้กับรูปแบบ MVVM เสมอ
rboarman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.