Pertanyaan Simple Injector vs Hiro vs Autofac [tertutup]


Saya baru mengenal DI dan IoC dan saya mencoba memutuskan wadah IoC mana yang akan dipelajari. Saya telah melihat beberapa perbandingan kinerja di mana tiga wadah yang direferensikan tampaknya berkinerja sangat baik. Namun, saya tidak menemukan perbandingan fitur yang termasuk Hiro atau Simple Injector. Komunitas untuk Autofac tampaknya menjadi yang terbesar, tetapi Hiro dan Simple Injector sangat cepat dalam benchmark dan Simple Injector khususnya klaim sangat mudah dipelajari. Yang mengatakan, saya tidak ingin belajar satu dan harus beralih ke yang lain karena set fitur terbatas. Untuk alasan itu saya condong ke arah Autofac karena cukup matang dan fitur lengkap (artikel bagus sini dan sini) serta menjadi salah satu wadah IoC tercepat yang tersedia. Adakah yang punya pengalaman dengan setidaknya dua dari tiga wadah ini? Bisakah Anda menawarkan perbandingan fitur?


42
2017-11-18 21:20


asal


Jawaban:


Mari saya mulai dengan mengatakan bahwa saya adalah pengembang utama di belakang Injector Sederhana.

saya setuju dengan Menandai bahwa dalam banyak kasus, kinerja kontainer bukanlah masalah. Namun, beberapa kontainer menunjukkan kinerja yang sangat buruk di beberapa titik dan sulit untuk secara intuitif merasakan bagian konfigurasi apa yang dapat bermasalah dari perspektif kinerja. Sebagian besar masalah kinerja dapat diperbaiki dengan mengubah konfigurasi (mengubah pendaftaran ke tunggal, menambahkan caching, dll), tidak peduli wadah mana yang Anda gunakan. Namun pada saat itu bisa sangat rumit untuk mengkonfigurasi sebuah kontainer. Kompleksitas inilah yang kami coba pecahkan dengan Simple Injector. Saya suka membiarkan yang lain memutuskan apakah kami berhasil (atau apakah memiliki sebuah wadah DI, atau namun Kontainer DI lain bahkan berguna).

Namun kinerja, bahkan tidak terlalu tinggi pada daftar awal saya ketika saya memulai proyek (kesederhanaan), tetapi (bebas-lock dan Expression berdasarkan pohon) memungkinkan saya melakukan optimasi yang menjadikannya salah satu wadah tercepat di lapangan (sementara masih sangat kaya fitur dan sangat extensible). Dalam sebagian besar kasus, Anda menemukan kinerja sangat dekat dengan memulai instance dengan tangan.

Ini mengatakan, masih membutuhkan lebih banyak waktu untuk mempelajari injeksi ketergantungan sebagai sebuah pola daripada yang diperlukan untuk belajar bekerja dengan wadah DI tertentu (Buku Markus benar-benar dapat membantu dengan keduanya). Sebuah container -even Simple Injector- tidak akan membantu Anda memahami DI dan PADAT (namun, beberapa pembatasannya mencoba mendorong Anda untuk memiliki desain aplikasi yang bersih).

Simple Injector cukup baru (atau terlambat) dalam adegan DI. Karena itu, tidak ada banyak perbandingan antara ini dan yang lain (meskipun ada beberapa sini dan sini) dan jumlah pengguna terbatas dibandingkan dengan kerangka kerja lainnya tetapi meningkat pesat (dan menurut sebuah jajak pendapat lama dari Roy Osherove, Simple Injector memiliki pangsa pasar pada saat itu sekitar 4%). Itu memalukan bahwa Simple Injector tidak banyak dibandingkan, karena mampu banyak (hanya mencari contoh di skenario lanjutan bagian dalam dokumentasi). Injector sederhana hilang dari perbandingan yang Anda tautkan pada (Bagian 1 dan bagian 2), jadi inilah daftar fitur untuk Simple Injector (tapi ingat bahwa Simple Injector adalah ditambahkan ke salah satu perbandingan baru penulis):

Saya tidak tahu apa persyaratan Anda, tetapi saya yakin bahwa Simple Injector dapat melayani Anda selama masa proyek Anda. Jika Anda mengalami masalah dengan itu, tanyakan saja di sini di Stackoverflow.com atau di Forum Injector Sederhana. Penyumbang Injector Sederhana dan penggemar lainnya akan dengan senang hati membantu Anda. Dan jangan lupa bahwa ada a sekelompok pengguna Stackoverflow yang dapat membantu Anda dengan masalah DI umum.


86