Apa Prism untuk WPF?


137

Saya sering menemukan sesuatu yang disebut Prism baru-baru ini. Microsoft, yang menjalankan proyek tersebut, menggambarkannya sebagai

Panduan untuk aplikasi komposit di WPF dan Silverlight.

Bahkan setelah membaca deskripsi yang lebih rinci di luar sana, saya hampir tidak tahu tentang apa sebenarnya itu, saya khawatir.

Saya berharap di sini seseorang dapat memberi saya penjelasan singkat yang jelas tentang apa itu Prism sebenarnya dan mengapa saya harus mempelajarinya. Saya telah menjadi pengembang WPF selama beberapa tahun sekarang, menggunakan MVVM yang adil, dan baru-baru ini bertemu orang-orang yang menggunakan Prism, tetapi secara pribadi merasa sedikit keluar dari lingkaran di sini.

Secara khusus, saya bertanya-tanya tentang poin-poin berikut:

  • Apakah Prism secara harfiah hanya (atau terutama) sebuah buklet, seperti yang diberikan di situs MSDN ? Apakah itu termasuk perpustakaan, jika demikian untuk apa sebenarnya?

  • Apakah Prism merupakan kerangka kerja MVVM? Haruskah saya menggunakannya sebagai "kerangka kerja Microsoft MVVM resmi" di atas orang lain di luar sana atau milik saya?

  • Apakah itu memberikan injeksi ketergantungan? Apakah itu terkait dengan MEF sama sekali dengan cara ini?

  • Ada lagi yang harus saya ketahui tentang apa yang dilakukan Prism, sebagai pengembang WPF / Silverlight.


5
Sebenarnya ini juga hal yang cukup kompleks - Prism mencoba memenuhi banyak kebutuhan, jadi sulit untuk mendapatkan satu jawaban yang "benar" jika Anda mencoba mencari tahu tujuannya. Itu benar-benar melakukan banyak hal.
Reed Copsey

1
Pertanyaan serupa yang saya tanyakan ini juga memiliki jawaban yang bagus untuk pertanyaan ini - stackoverflow.com/questions/6251821/…
akjoshi

9
satu lagi rawa keruh dari P&P. setiap kali mereka merilis sesuatu seperti ini saya menemukan diri saya harus pergi ke SO atau wikipedia untuk mencari tahu apa sebenarnya hal itu. mengapa harus selalu begitu samar?
Adam Ralph

1
jika Anda suka, ini adalah jenis dokumentasi yang memandu Anda bagaimana mengimplementasikan pola MVVM di aplikasi WPF / Silverlight Anda. ada juga perpustakaan dari codePlex yang saya tidak yakin untuk apa itu sebenarnya. dokumentasi yang baik tentang PRISM ada di tautan di bawah ini, ada baiknya jika melihatnya: Prism 4.1 - Panduan Pengembang untuk Microsoft Prism - MSDN
user3353518

Jawaban:


92

Prism adalah panduan resmi Microsoft Patterns and Practices Team untuk membangun "aplikasi komposit" di WPF dan Silverlight.

Ini dimaksudkan untuk memberikan panduan tentang praktik terbaik untuk membangun aplikasi skala besar yang fleksibel dalam hal pengembangan dan pemeliharaan.

Ini termasuk panduan tentang injeksi ketergantungan (melalui Unity atau MEF), tata letak (termasuk menggunakan MVVM), penanganan kejadian komposit, dll.


Apakah Prism secara harfiah hanya (atau terutama) sebuah buklet, seperti yang diberikan di situs MSDN? Apakah itu termasuk perpustakaan, jika demikian untuk apa sebenarnya?

Ini adalah sebuah buku, tetapi juga termasuk perpustakaan untuk dukungan (di situs GitHub ).

Apakah Prism merupakan kerangka kerja MVVM? Haruskah saya menggunakannya sebagai "kerangka kerja Microsoft MVVM resmi" di atas orang lain di luar sana atau milik saya?

Iya dan tidak. Ini mencakup panduan untuk menggunakan MVVM, tetapi lebih dari sekadar kerangka kerja MVVM. Ini sebenarnya bukan, dengan sendirinya, sebuah "kerangka kerja MVVM" - meskipun itu menyertakan panduan MVVM.

Apakah itu memberikan injeksi ketergantungan? Apakah itu terkait dengan MEF sama sekali dengan cara ini?

Iya. Ini awalnya termasuk Unity, tetapi rilis terbaru menyertakan penggunaan MEF untuk DI.

Ada lagi yang harus saya ketahui tentang apa yang dilakukan Prism, sebagai pengembang WPF / Silverlight.

Ada baiknya melihat bagaimana mereka melakukan sesuatu. Mereka memiliki konsep "wilayah" yang sangat rumit, serta dukungan agregasi acara yang baik. Ini juga mencakup praktik yang baik untuk mengembangkan terhadap WPF, Silverlight, dan Windows Phone secara bersamaan.


1
Terima kasih balasannya. Ini memberi saya gambaran yang bagus menurut saya. Hanya untuk memperjelas: apakah sebenarnya ada kode terkait MVVM atau bahkan DLL perpustakaan?
Noldorin

4
@Noldorin: Saya berasumsi pertanyaan Anda tentang bagian dalam Prism ... Ada beberapa dukungan untuk MVVM, tetapi terus terang, MVVM, sebagai pola, hampir tidak memerlukan dukungan perpustakaan. Prism memang memiliki objek notifikasi yang bagus dan dukungan perintah, yang sebenarnya adalah satu-satunya hal yang hilang di BCL yang Anda perlukan untuk MVVM. Ini juga memiliki dukungan pencari lokasi, yang membantu jika Anda ingin menggunakan DI / layanan bersama untuk komunikasi VM <-> VM. Itu tidak memiliki beberapa hal "ekstra" yang disediakan oleh beberapa "kerangka kerja" MVVM, seperti kerangka olah pesan, dll.
Reed Copsey

1
Untuk mengikuti panduan Prism, apakah perpustakaan harus sudah diinstal?
dios231

18

Ini adalah kerangka kerja untuk membangun aplikasi WPF dan Silverlight.

http://compositewpf.codeplex.com/

Dulu disebut "Prism" sebelum Microsoft mengganti namanya menjadi "CompositeWPF."

Jawaban:

1) Prism adalah kerangka kerja MVVM untuk digunakan sebagai dasar untuk aplikasi Anda

2) Saya menyarankan agar tergantung pada kebutuhan spesifik Anda. Anda harus memposting pertanyaan lain dengan detail spesifik sehingga Anda bisa mendapatkan jawaban yang spesifik.

3) Prism menggunakan injeksi ketergantungan (Unity) tetapi tidak "menyediakan" nya

4) Imo, Prism menyediakan banyak fungsi tetapi berat pada kurva pembelajaran. Untuk proyek kecil dengan Anda sebagai satu-satunya pengembang, Anda mungkin tidak memerlukan abstraksi dan alat yang disediakannya.


3
Saya agak tidak setuju dengan pernyataan Anda # 1 - Prism menyertakan panduan MVVM, tetapi BANYAK panduan (sebagian besar sampel) bukanlah MVVM sama sekali. Ini lebih disajikan sebagai salah satu opsi yang dapat digunakan saat membangun aplikasi komposit.
Reed Copsey

1
Saya rasa saya selalu menggunakan pola MVVM
rboarman
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.