Cara menggunakan Autofac dalam ASP.Net Core

Suntikan ketergantungan memudahkan gandingan longgar dan mendorong kebolehujian dan penyelenggaraan. ASP.Net Core menyediakan sokongan terbina dalam untuk suntikan kebergantungan (sejenis inversi kawalan) dengan bekas suntikan kebergantungan minimalis. Walau bagaimanapun, bekas yang dibina tidak mempunyai banyak ciri suntikan kebergantungan penuh atau penyongsangan bekas kawalan.

Untuk mengatasinya, anda boleh menggunakan bekas pihak ketiga di ASP.Net Core. Dengan kata lain, anda boleh mengganti bekas terbina dalam dengan mudah dengan bekas pihak ketiga. Autofac adalah penyongsangan bekas kawalan yang boleh digunakan untuk menyelesaikan pergantungan. Artikel ini memberikan perbincangan mengenai bagaimana kita dapat bekerjasama dengan Autofac di ASP.Net Core.

Buat projek ASP.Net Core di Visual Studio

Pertama mari buat projek ASP.Net Core di Visual Studio. Dengan mengandaikan Visual Studio 2017 atau Visual Studio 2019 dipasang di sistem anda, ikuti langkah-langkah yang digariskan di bawah untuk membuat projek ASP.Net Core baru di Visual Studio.

  1. Lancarkan ID Studio Visual.
  2. Klik pada "Buat projek baru."
  3. Di tetingkap "Buat projek baru", pilih "Aplikasi Web Teras ASP.Net" dari senarai templat yang dipaparkan.
  4. Klik Seterusnya.
  5. Di tetingkap "Konfigurasikan projek baru Anda", tentukan nama dan lokasi untuk projek baru.
  6. Klik Buat.
  7. Di tetingkap "Buat Aplikasi Web ASP.Net Core Baru", pilih .Net Core sebagai runtime dan ASP.Net Core 2.2 (atau lebih baru) dari senarai juntai bawah di bahagian atas.
  8. Pilih "Aplikasi Web" sebagai templat projek. 
  9. Pastikan bahawa kotak centang "Aktifkan Docker Support" dan "Configure for HTTPS" tidak dicentang kerana kami tidak akan menggunakan fitur tersebut di sini.
  10. Pastikan bahawa Pengesahan ditetapkan sebagai "Tanpa Pengesahan" kerana kami juga tidak akan menggunakan pengesahan.
  11. Klik Buat.

Ini akan membuat projek ASP.Net Core baru di Visual Studio. Kami akan menggunakan projek ini di bahagian seterusnya artikel ini untuk bekerjasama dengan Autofac.

Pasang Autofac dalam projek ASP.Net Core anda

Mudah untuk memasang Autofac - anda boleh memasangnya dari NuGet. Pada masa penulisan ini, Autofac versi terkini ialah 4.9.2. Untuk bekerja dengan Autofac, anda harus memasang pakej Autofac.Extensions.DependencyInjection juga. Ini akan memastikan bahawa anda mempunyai pergantungan yang diperlukan untuk bekerja dengan Autofac.

Pilih projek Aplikasi Web ASP.Net Core yang anda buat di atas, kemudian klik kanan dan pasang Autofac.Extensions.DependencyInjection melalui Pengurus Pakej NuGet. Terima perjanjian pelesenan yang mungkin anda diminta semasa pemasangan. Sebagai alternatif, anda boleh memasang pakej ini dengan memasukkan arahan berikut di NuGet Package Manager Console:

Pasang-Pakej Autofac.Extensions.DependencyInjection

Buat kelas dalam aplikasi ASP.Net Core anda

Untuk menggambarkan suntikan kebergantungan, kita memerlukan beberapa objek untuk dikerjakan. Pertimbangkan antara muka IAuthorRepository yang mengandungi pengisytiharan kaedah GetMessage di bawah.

 antara muka awam IAuthorRepository

    {

        rentetan GetMessage ();

    }

Kelas AuthorRepository menerapkan antara muka IAuthorRepository seperti yang ditunjukkan di bawah.

 kelas awam AuthorRepository: IAuthorRepository

    {

        rentetan awam GetMessage ()

        {

            kembalikan "Hello World";

        }

    }

Perhatikan bahawa ini adalah pelaksanaan minimalis repositori - iaitu, ia tidak mengandungi kaedah CRUD yang dikandung oleh repositori khas. Saya akan menyerahkan kepada anda untuk melaksanakan kaedah CRUD dengan tepat.

Konfigurasikan Autofac di ASP.Net Core

Untuk mengkonfigurasi Autofac, anda harus menentukan kod konfigurasi dalam kaedah ConfigureServices kelas Startup. Perhatikan bahawa kaedah ConfigureServices digunakan untuk menambahkan perkhidmatan semasa menjalankan ke wadah.

Langkah pertama adalah membuat pembina kontena untuk mendaftarkan perkhidmatan yang diperlukan dengan wadah Autofac. Langkah pertama adalah mengisi perkhidmatan kerangka menggunakan kaedah Populasi seperti yang ditunjukkan di bawah.

var containerBuilder = ContainerBuilder baru ();

containerBuilder.Populate (perkhidmatan);

Langkah seterusnya adalah mendaftarkan perkhidmatan khusus dengan Autofac. Untuk melakukan ini, gunakan kaedah RegisterType pada contoh pembina kontena seperti ditunjukkan di bawah.

containerBuilder.RegisterType (). Sebagai ();

Untuk membina bekas, tulis kod berikut.

var container = containerBuilder.Build ();

kembali bekas. Selesaikan ();

Berikut adalah kod sumber lengkap kaedah ConfigureServices untuk rujukan anda:

awam IServiceProvider ConfigureServices (perkhidmatan IServiceCollection)

   {

       perkhidmatan.AddMvc ();

       var containerBuilder = ContainerBuilder baru ();

       containerBuilder.Populate (perkhidmatan);

       containerBuilder.RegisterType ().

       Sebagai ();

       var container = containerBuilder.Build ();

       kembali bekas. Selesaikan ();

   }

Gunakan Autofac di pengawal anda di ASP.Net Core

Sekarang Autofac telah dipasang dan dikonfigurasi dalam projek anda, anda boleh mula menggunakannya di pengawal anda. Coretan kod berikut menggambarkan bagaimana anda dapat menyelesaikan kebergantungan dalam ValueController.

  kelas awam NilaiController: ControllerBase

  {

        IAuthorRepository swasta _authorRepository; 

        publicController (IAuthorRepository pengarangRepository) 

        {

            _authorRepository = pengarangRepository;

        } // DAPATKAN api / nilai

        [HttpGet]

        Hasil Tindakan Awam ()

        {

            kembali _authorRepository.GetMessage ();

        }

     // Kaedah tindakan lain

  }

Prinsip suntikan ketergantungan adalah merealisasikan pembalikan prinsip kawalan. Ini adalah teknik yang digunakan untuk menghilangkan kebergantungan dari pelaksanaannya dengan memungkinkan Anda memasukkan kebergantungan ini secara luaran. Penukaran bekas kawalan seperti Autofac memanfaatkan suntikan kebergantungan untuk membalikkan aliran kawalan dan membantu mengautomatikkan instansiasi dan pengurusan kitaran hidup objek.

Suntikan ketergantungan mengambil tiga bentuk: suntikan konstruktor, suntikan antara muka, dan suntikan harta. Dalam contoh ini, kami menggunakan suntikan konstruktor untuk menyuntikkan kebergantungan - iaitu contoh jenis AuthorRepository - pada waktu runtime di kelas ValuesController.

Kami telah melihat bagaimana Autofac dapat digunakan untuk menggantikan bekas suntikan kebergantungan lalai di ASP.Net Core, tetapi kami hanya mencakar permukaan kemampuannya. Saya akan meneroka Autofac dengan lebih mendalam dalam catatan masa depan di sini.