Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 36245|Jawab: 1

[Inti .NET] ASP.NET Injeksi dependensi inti menggunakan kontainer IOC yang menyertainya

[Salin tautan]
Diposting pada 07/05/2019 13.55.10 | | | |
ASP.NET Injeksi dependensi inti menggunakan kontainer IOC yang menyertainya
https://www.itsvse.com/thread-7562-1-1.html
(Sumber: Architect_Programmer)

ASP.NET Core menggunakan Autofac untuk mengimplementasikan injeksi IOC
https://www.itsvse.com/thread-7563-1-1.html
(Sumber: Architect_Programmer)

ASP.NET Core menggunakan Autofac untuk mengimplementasikan intersepsi AOP
https://www.itsvse.com/thread-7566-1-1.html
(Sumber: Architect_Programmer)

Di ASP.NET Core baru, sejumlah besar injeksi dependensi digunakan untuk menulis kode.

Misalnya, di kelas Startup kita, kita dapat melihat hal berikut:

AddMvc AddDbContext menyertakan AddDirectoryBrowser yang kami gunakan untuk tur direktori sebelumnya:

Semuanya adalah kerangka kerja yang memberikan layanan yang baik, dan kita dapat menggunakannya secara langsung dengan menyuntikkannya.

Inversion of Control (IoC) adalah prinsip desain dalam pemrograman berorientasi objek yang dapat digunakan untuk mengurangi kopling antar kode komputer. Metode yang paling umum disebut Injeksi Dependensi (DI), dan ada juga metode yang disebut "Pencarian Dependensi". Dengan mengontrol inversi, ketika objek dibuat, entitas eksternal yang mengontrol semua objek dalam sistem meneruskannya referensi ke objek yang bergantung padanya. Dapat juga dikatakan bahwa dependensi disuntikkan ke dalam objek.

Untuk menggunakan ioc, kelas Startup perlu mereferensikan Microsoft.Extensions.DependencyInjection(ps, yang sudah cukup mudah: Microsoft.. Memperluas... Injeksi ketergantungan - - ,)

Menyuntikkan siklus hidup layanan

Microsoft menyediakan 3 siklus hidup untuk layanan yang disuntikkan sendiri.

Sementara

Layanan siklus hidup instan yang dibuat setiap kali diminta. Siklus hidup ini paling cocok untuk layanan tanpa kewarganegaraan yang ringan.

Tercakup

Dalam cakupan yang sama, layanan dibuat hanya sekali per permintaan.

Singleton (Hanya)

Global hanya dibuat sekali, pertama kali diminta, dan kemudian selalu digunakan.

Bagaimana Anda menggunakan ketiga siklus hidup ini? Kita dapat menggunakan metode yang berbeda secara langsung saat menyuntikkan, kodenya adalah sebagai berikut:


Mari kita uji generasi spesifik dari ketiga siklus hidup ini

Kami menulis tiga antarmuka dengan nama berbeda dan 3 kelas berbeda untuk mengimplementasikan antarmuka, sebagai berikut:

Di setiap konstruktor kelas implementasi, kami menghasilkan GUID baru, yang memungkinkan kami untuk menentukan apakah kelas telah mengeksekusi ulang konstruktor.

Menyuntikkan layanan ke pengontrol

Umumnya ada tiga cara injeksi: injeksi konstruktor, injeksi metode, dan injeksi atribut. Kontainer IOC Microsoft sendiri menggunakan injeksi konstruktor secara default (Injeksi atribut tidak didukung, tetapi dapat dicapai dengan penggantian kontainer pihak ketiga)

Lihat kode halaman:

Jalankan proyek dan akses melalui 2 browser berbeda, seperti yang ditunjukkan di bawah ini:



Kami menemukan bahwa GUID yang dihasilkan dua kali dalam siklus hidup seketika tidak konsisten, menunjukkan bahwa objek tersebut tidak sama.

Namun, siklus hidup cakupannya sama, karena di bawah cakupan yang sama, GUID layanan yang digunakan dua kali di browser yang sama adalah sama, menunjukkan bahwa objek yang sama digunakan.

Dalam kasus singleton, dua browser yang berbeda mengakses GUID yang selalu sama, menunjukkan bahwa objek yang sama sedang dipanggil.

(Akhir)






Mantan:.NET Core Entity menggunakan Entity Framework Core untuk menautkan database
Depan:ASP.NET Core menggunakan Autofac untuk mengimplementasikan injeksi IOC
 Tuan tanah| Diposting pada 09/03/2022 11.00.35 |
Ganti layanan di kontainer DI bawaan ASP.NET Core

Kode:





Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com