Kami menggunakan ASP.net MVC.
Manakah dari berikut ini yang merupakan kerangka kerja DI terbaik Ninject atau Unity dan mengapa?
Kami menggunakan ASP.net MVC.
Manakah dari berikut ini yang merupakan kerangka kerja DI terbaik Ninject atau Unity dan mengapa?
Jawaban:
Terakhir kali saya melihat salah satu dari mereka, saya menemukan Ninject sedikit lebih baik. Namun keduanya memiliki kekurangan.
Ninject memiliki skema konfigurasi fasih yang lebih baik. Unity tampaknya sebagian besar mengandalkan konfigurasi XML. Kelemahan utama Ninject adalah Anda harus mereferensikan Ninject.Core di mana pun dalam kode Anda untuk menambahkan atribut [Inject].
Jika saya mungkin bertanya, mengapa Anda membatasi pilihan Anda pada dua pilihan ini? Saya pikir Castle.Windsor, Autofac dan StructureMap setidaknya sama baiknya atau lebih baik.
sumber
Saya tahu ini pertanyaan lama, tapi inilah pikiran saya:
Saya pribadi suka Ninject. Saya suka antarmuka yang lancar dan menghindari XML. Saya biasanya suka XML, hanya saja tidak untuk barang konfigurasi semacam ini. Terutama ketika refactoring terlibat, antarmuka yang lancar membuatnya lebih mudah untuk diperbaiki.
Saya merindukan ObjectFactory dari StructureMap, tetapi ada solusi mudah untuk menambahkannya ke Ninject.
Seperti yang ditunjukkan Jeffery, Anda tidak harus menggunakan atribut [Inject] jika Anda hanya memiliki satu konstruktor.
Saya menemukan bahwa saya lebih suka antarmuka yang lancar tidak hanya karena mereka menghindari XML, tetapi karena mereka menyebabkan kesalahan waktu kompilasi ketika saya mengubah sesuatu yang mempengaruhinya. Konfigurasi XML tidak dan semakin sedikit saya harus ingat untuk mengubah saya menjadi lebih baik.
sumber
Ninject mendeteksi dependensi melingkar jika Anda menggunakan Konstruktor Injeksi sebagai lawan dari Unity yang terlepas dari teknik injeksi hanya melempar StackOverflowException yang sangat sulit untuk di-debug.
sumber
Saya setuju dengan Mendelt, tidak ada kerangka DI "terbaik". Itu tergantung pada situasinya dan mereka semua memiliki pro dan kontra. pikir David Hayden mengatakan di DotNet Rocks bahwa Unity adalah pilihan yang lebih disukai jika Anda menggunakan EntLib lainnya dan sudah terbiasa dengannya. Saya pribadi menggunakan Unity karena pelanggan saya menyukai kenyataan bahwa dikatakan Microsoft Enterprise Library (Unity) di DLL, jika Anda mengerti apa yang saya katakan.
Saya menggunakan kedua konfigurasi xml untuk menyiapkan antarmuka dan implementasi konkretnya tetapi kemudian saya menggunakan atribut dalam kode saat menyuntikkan, seperti:
dan dalam kode:
Secara pribadi saya pikir itu membuatnya lebih jelas apa yang terjadi, tetapi tentu saja orang dapat berargumen bahwa Anda akan memiliki referensi tentang persatuan di seluruh aplikasi Anda. Terserah kamu.
sumber
http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison
Persatuan lebih cepat tetapi bukan yang terbaik
sumber