Bagaimana Anda menggunakan Kerangka Ekstensibilitas Terkelola?


10

Saya telah bekerja dengan MEF selama sekitar 2 minggu. Saya mulai berpikir untuk apa MEF, meneliti untuk mencari tahu bagaimana menggunakan MEF, dan akhirnya mengimplementasikan Host dengan 3 modul. Kontrak terbukti mudah dipahami dan modulnya mudah dikelola.

Meskipun MEF memiliki penggunaan yang sangat praktis, saya bertanya-tanya sejauh mana? Maksud saya, apakah semua orang akan menulis ulang aplikasi yang sudah ada untuk diperpanjang?

Ya, itu terdengar, dan sangat tidak praktis. Berbicara secara retoris:

  • bagaimana MEF mempengaruhi tren saat ini dalam pemrograman?

  • sudahkah Anda mulai mencari peluang untuk menggunakan MEF?

  • Sudahkah Anda mulai merencanakan penulisan ulang aplikasi yang sudah ada yang mungkin mendapat manfaat dari perpanjangan?

Yang mengatakan, pertanyaan saya adalah:
bagaimana saya tahu kapan saya harus merencanakan proyek baru dengan diperpanjang?
bagaimana saya akan tahu jika proyek yang ada perlu ditulis ulang untuk diperpanjang?

Adakah yang menggunakan MEF?

Jawaban:


8

Adakah yang menggunakan MEF?

Saya sedang mengerjakan proyek Silverlight menggunakan pola MVVM. Kami mulai dengan hanya menghubungkan semua VM secara bersamaan sebagaimana diperlukan melalui antarmuka dan injeksi ketergantungan manual (baik konstruktor atau injeksi properti tergantung pada kebutuhan). Itu mulai menjadi menyakitkan, dan kami mulai menggunakan MEF pada dasarnya kerangka kerja injeksi ketergantungan untuk mengekspor layanan tertentu yang digunakan di seluruh model tampilan, dan mengimpornya ke dalam model tampilan yang membutuhkannya. Bekerja dengan sempurna dan dengan kode yang sangat sedikit.

Ya, ada beberapa puritan di luar sana yang akan mengatakan MEF tidak dimaksudkan untuk injeksi ketergantungan dan kerangka kerja injeksi ketergantungan nyata akan jauh lebih baik. Namun, MEF dimasukkan ke dalam. NET yang merupakan nilai tambah besar, dan itu sudah cukup untuk memenuhi kebutuhan kita.

bagaimana saya tahu kapan saya harus merencanakan proyek baru dengan ekstensibilitas? bagaimana saya akan tahu jika proyek yang ada perlu ditulis ulang untuk diperpanjang?

IMO, Anda harus selalu memisahkan masalah dengan tepat dan menggunakan antarmuka untuk memungkinkan modul berbeda berubah secara mandiri. Jika Anda melakukan ini dengan benar, maka ketika Anda menemukan kebutuhan untuk ekstensibilitas, MEF harus mudah ditambahkan. Tapi saya tidak akan memulai proyek yang tidak memiliki persyaratan ekstensibilitas dan memasukkan MEF untuk berjaga-jaga. Saya akan menunggu sampai ada kebutuhan. Untuk proyek-proyek yang ada, jika ada kebutuhan, saya akan mengevaluasi upaya rewiring proyek untuk menggunakan MEF versus solusi alternatif versus tidak melakukan apa-apa, dan melihat mana yang menang.


6

Kesalahan yang dilakukan orang, dan saya pikir itu karena penamaan (Managed Extensibility Framework) adalah dengan menganggap MEF hanya praktis untuk diperpanjang. MEF benar-benar membahas tiga hal utama: ekstensibilitas, penemuan, dan metadata. Dua yang terakhir sangat kuat bahkan untuk aplikasi yang tidak akan pernah melihat satu pun plug-in atau ekstensi.

Ini adalah artikel yang saya tulis tentang kekuatan penemuan untuk wadah IOC: http://www.informit.com/articles/article.aspx?p=1635818

Saya menggunakan MEF di sebagian besar lini aplikasi bisnis perusahaan karena membuatnya lebih cepat dan lebih mudah untuk membangun dan memelihara aplikasi modular di Silverlight.


Saya telah membaca artikel Anda - setidaknya dua kali;)
IAbstract

4

Saat ini saya menggunakan MEF dalam beberapa proyek yang menggabungkan pola Repositori.

Salah satunya menggunakan jenis repositori yang berbeda saat pengujian unit, proyek lainnya menggunakan repositori lokal (langsung ke DB), jarak jauh (WCF) dan pengujian.

Kedua proyek dapat mengubah tipe repositori mereka melalui kode atau konfigurasi, dan didasarkan pada tipe metadata / Malas MEF.

Hingga saat ini, kedua proyek berjalan sangat baik.

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.