Jika saya tidak menggunakan kontainer DI, saya tidak perlu mereferensikan pustaka EntityFramework di aplikasi MVC3 saya, hanya lapisan bisnis saya yang akan mereferensikan lapisan DAL / Repo saya.
Ya, itulah situasi yang saya hindari dengan susah payah :)
Dengan kode yang digabungkan erat, setiap pustaka mungkin hanya memiliki beberapa referensi, tetapi ini lagi-lagi memiliki referensi lain, membuat grafik dependensi yang dalam, seperti ini:
Karena grafik ketergantungan dalam, itu berarti bahwa sebagian besar perpustakaan menyeret sepanjang banyak dependensi lain - misalnya dalam diagram, Perpustakaan C menyeret bersama Perpustakaan H, Perpustakaan E, Perpustakaan J, Perpustakaan M, Perpustakaan K dan Perpustakaan N . Hal ini mempersulit penggunaan kembali setiap library secara terpisah dari yang lain - misalnya dalam pengujian unit .
Namun, dalam aplikasi yang digabungkan secara longgar, dengan memindahkan semua referensi ke Akar Komposisi , grafik ketergantungan menjadi sangat rata :
Seperti yang diilustrasikan oleh warna hijau, sekarang dimungkinkan untuk menggunakan kembali Library C tanpa menyeret dependensi yang tidak diinginkan.
Namun, semua yang dikatakan, dengan banyak Kontainer DI, Anda tidak perlu menambahkan referensi keras ke semua pustaka yang diperlukan. Sebagai gantinya, Anda dapat menggunakan pengikatan terlambat baik dalam bentuk pemindaian rakitan berbasis konvensi (lebih disukai) atau konfigurasi XML.
Namun, ketika Anda melakukannya, Anda harus ingat untuk menyalin rakitan ke folder bin aplikasi, karena itu tidak lagi terjadi secara otomatis. Secara pribadi, saya jarang menganggap upaya ekstra itu sepadan.
Versi yang lebih terperinci dari jawaban ini dapat ditemukan dalam kutipan dari buku saya Injeksi Ketergantungan, Prinsip, Praktik, Pola .