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.
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.
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:
<type type="ILogger" mapTo="EntLibLogger">
<lifetime type="singleton"/>
</type>
dan dalam kode:
[InjectionConstructor]
public Repository([Dependency] ILogger logger)
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.
http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison
Persatuan lebih cepat tetapi bukan yang terbaik