IoC ~ Autofac yang Efisien
Tidak ada keraguan bahwa kontainer IoC favorit Microsoft bukanlah spring.net, unity tetapi Autofac, karena efisiensinya, karena kesederhanaannya, sehingga juga digunakan untuk proyek kebun yang dipimpin Microsoft
menggambarkan penggunaan Autofac.
Mari kita sebut sekarang:
Dalam kuliah berikutnya, saya akan berbicara tentang penggunaan Autofac dalam proyek tertentu untuk proyek kebun.
Sekarang lihat siklus hidupnya
1、InstancePerDependency
Buat instans unik baru untuk setiap dependensi atau panggilan. Ini juga merupakan cara default untuk membuat instance.
Dokumentasi resmi menjelaskan: Konfigurasikan komponen sehingga setiap komponen dependen atau panggilan ke Resolve() mendapatkan instans baru yang unik (default.)
2、InstancePerLifetimeScope
Dalam domain siklus hidup, setiap dependensi atau panggilan membuat satu instans bersama, dan untuk setiap domain siklus hidup yang berbeda, instans tersebut unik dan tidak dibagikan.
Dokumentasi resmi menjelaskan: Konfigurasikan komponen sehingga setiap komponen dependen atau panggilan ke Resolve() dalam satu ILifetimeScope mendapatkan instans bersama yang sama. Komponen dependen dalam cakupan masa pakai yang berbeda akan mendapatkan instans yang berbeda.
3、InstancePerMatchingLifetimeScope
Dalam domain siklus hidup yang diidentifikasi, setiap dependensi atau panggilan membuat satu instans bersama. Instans dalam domain induk dapat dibagikan dalam domain identitas turunan dari domain siklus hidup yang diidentifikasi. Jika tidak ada domain siklus hidup yang diidentifikasi ditemukan di seluruh hierarki pewarisan, pengecualian akan dilemparkan: DependencyResolutionException.
Dokumentasi resmi menjelaskan: Konfigurasikan komponen sehingga setiap komponen dependen atau panggilan ke Resolve() dalam ILifetimeScope yang ditandai dengan salah satu nilai tag yang disediakan mendapatkan instans bersama yang sama. Komponen dependen dalam cakupan masa pakai yang merupakan turunan dari cakupan yang ditandai akan berbagi instans induk. Jika tidak ada cakupan yang ditandai dengan tepat yang dapat ditemukan dalam hierarki, DependencyResolutionException akan dilemparkan.
4、InstancePerOwned
Dalam siklus hidup instans yang dibuat oleh instans yang dimiliki dalam domain siklus hidup, setiap komponen dependen atau panggilan ke metode Resolve() membuat satu instans bersama, dan domain siklus hidup turunan berbagi instans dalam domain siklus hidup induk. Jika tidak ada domain siklus hidup yang sesuai dengan instans turunan yang ditemukan dalam hierarki pewarisan, pengecualian akan dilemparkan: DependencyResolutionException.
Dokumentasi resmi menjelaskan:
Konfigurasikan komponen sehingga setiap komponen dependen atau panggilan ke Resolve() dalam ILifetimeScope yang dibuat oleh instans yang dimiliki mendapatkan instans bersama yang sama. Komponen dependen dalam cakupan masa pakai yang merupakan turunan dari cakupan instans yang dimiliki akan berbagi instans induk. Jika tidak ada cakupan instans milik yang sesuai yang dapat ditemukan dalam hierarki, DependencyResolutionException akan dilemparkan.
5、Instance Tunggal
Setiap kali Anda bergantung pada komponen atau memanggil metode Resolve(), Anda mendapatkan instance bersama yang sama. Faktanya, ini adalah model singleton.
Dokumentasi resmi menjelaskan: Konfigurasikan komponen sehingga setiap komponen dependen atau panggilan ke Resolve() mendapatkan instans bersama yang sama.
6、InstancePerHttpRequest
Dalam konteks permintaan Http, bagikan instans komponen. Hanya tersedia untuk pengembangan MVC asp.net.
|