Cara menggunakan corak pilihan dalam ASP.NET Core

Semasa bekerja di ASP.NET Core, anda sering akan menentukan tetapan aplikasi anda, menyimpannya dalam beberapa fail, dan kemudian mengambil tetapan ini apabila aplikasi memerlukannya. Biasanya, anda akan mendaftarkan kebergantungan anda dalam kaedah ConfigureServices kelas Startup. Anda boleh menentukan tetapan aplikasi anda di appsettings.json atau beberapa fail .json yang lain dan kemudian memanfaatkan suntikan kebergantungan melalui IOptions untuk membaca tetapan ini dalam aplikasi anda.

Corak pilihan menyediakan cara elegan untuk menambahkan tetapan yang sangat ditaip ke aplikasi Core ASP.NET anda. Corak pilihan, yang merupakan lanjutan di atas antara muka IServiceCollection, memanfaatkan kelas untuk mewakili sekumpulan tetapan yang berkaitan. Artikel ini membincangkan mengenai corak pilihan, mengapa ia berguna, dan bagaimana ia boleh digunakan untuk bekerja dengan data konfigurasi di ASP.NET Core.

Untuk bekerja dengan contoh kod yang disediakan dalam artikel ini, anda harus memasang Visual Studio 2019 di sistem anda. Sekiranya anda belum mempunyai salinannya, anda boleh memuat turun Visual Studio 2019 di sini.

Buat projek ASP.NET Core API

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

  1. Lancarkan ID Studio Visual.
  2. Klik pada "Buat projek baru."
  3. Di tetingkap "Buat projek baru", pilih "Aplikasi Web Inti ASP.NET" dari senarai templat yang dipaparkan.
  4. Klik Seterusnya.
  5. Di tetingkap "Konfigurasikan projek baru anda" yang ditunjukkan di sebelah, tentukan nama dan lokasi untuk projek baru.
  6. Klik Buat.
  7. Di tetingkap "Buat Aplikasi Web Teras ASP.NET Teras", pilih .NET Core sebagai runtime dan ASP.NET Core 3.0 (atau lebih baru) dari senarai juntai bawah di bahagian atas. Saya akan menggunakan ASP.NET Core 3.1 di sini.
  8. Pilih "API" sebagai templat projek untuk membuat aplikasi ASP.NET Core API baru. 
  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 API baru di Visual Studio. Pilih folder penyelesaian Pengawal di tetingkap Penyelesaian Penyelesaian dan klik "Tambah -> Pengawal ..." untuk membuat pengawal baru bernama DefaultController. Kami akan menggunakan projek ini di bahagian seterusnya artikel ini.

Terapkan corak pilihan dalam ASP.NET Core

Untuk menggunakan corak pilihan dalam ASP.NET Core, anda memerlukan pakej Microsoft.Extensions.Options.ConfigurationExtensions. Secara kebetulan, aplikasi Core ASP.NET secara tidak langsung merujuk pakej Microsoft.Extensions.Options.ConfigurationExtensions secara lalai.

Semasa menggunakan corak pilihan, anda biasanya ingin menggunakan kelas untuk mewakili sekumpulan tetapan yang berkaitan. Dalam mengasingkan tetapan konfigurasi ke kelas yang berasingan, aplikasi anda mematuhi prinsip berikut:

  • Pemisahan masalah: Tetapan yang digunakan dalam modul aplikasi yang berlainan dipisahkan antara satu sama lain. 
  • Prinsip pengasingan antara muka: Kelas yang mewakili tetapan ini hanya bergantung pada tetapan konfigurasi yang akan mereka gunakan. 

Sekarang tulis tetapan berikut dalam fail appsettings.json.

"Pengaturan Pangkalan Data": {

    "Pelayan": "localhost",

    "Penyedia": "Pelayan SQL",

    "Pangkalan Data": "DemoDb",

    "Pelabuhan": 23,

    "Nama Pengguna": "sa",

    "Kata Laluan": "Joydip123"

  }

Perhatikan bahawa kelas konfigurasi anda harus mempunyai harta get dan set awam. Kami akan memanfaatkan kelas berikut untuk membaca tetapan ini sebentar lagi.

 Pangkalan Data kelas awam

    {

        pelayan rentetan awam {get; menetapkan; }

        Penyedia rentetan awam {get; menetapkan; }

        Pangkalan Data rentetan awam {get; menetapkan; }

        Pelabuhan int awam {get; menetapkan; }

        rentetan awamNama Pengguna {get; menetapkan; }

        kata laluan rentetan awam {get; menetapkan; }

    }

Anda kini boleh menggunakan kaedah Konfigurasi pelanjutan IServiceCollection untuk mengikat kelas tetapan anda ke konfigurasi anda seperti yang ditunjukkan dalam coretan kod yang diberikan di bawah.

kekosongan awam ConfigureServices (perkhidmatan IServiceCollection)

{

   perkhidmatan.AddControllers ();

   perkhidmatan.Konfigurasi

   (pilihan => Konfigurasi.GetSection ("DatabaseSettings"). Ikatan (pilihan));

}

Baca data konfigurasi dalam pengawal di ASP.NET Core

Kami sekarang akan memanfaatkan DefaultController yang kita buat sebelumnya untuk menunjukkan bagaimana kita dapat membaca data konfigurasi di pengawal. Antaramuka IOptions memperlihatkan sifat Nilai yang dapat digunakan untuk mengambil contoh kelas tetapan.

Coretan kod berikut menunjukkan bagaimana anda boleh menggunakan kelas DatabaseSettings di pengawal anda yang bernama DefaultController. Perhatikan bagaimana suntikan kebergantungan (suntikan konstruktor dalam contoh ini) telah digunakan di sini.

kelas awam DefaultController: ControllerBase

{

   Tetapan Pangkalan Data peribadi _setting;

   public DefaultController (tetapan IOptions)

   {

      _settings = setting.Value;

   }

   // Kaedah tindakan

}

Menguatkuasakan peraturan untuk konfigurasi di ASP.NET Core

Anda juga dapat menerapkan peraturan tertentu seperti yang ditunjukkan dalam coretan kod di bawah. Perhatikan bagaimana contoh kelas pembantu untuk SQL Server atau MySQL ditambahkan sebagai singleton di sini.

perkhidmatan. Konfigurasi (pilihan =>

 {

     jika (options.Provider.ToLower (). Potong (). Sama ("sqlserver"))

     {

        perkhidmatan.AddSingleton (SqlDbHelper baru ());

     }

     lain jika (options.Provider.ToLower (). Potong (). Sama ("mysql"))

     {

         perkhidmatan.AddSingleton (MySqlDbHelper baru ());

     }

 });

Sokongan untuk konfigurasi yang sangat ditaip adalah ciri hebat dalam ASP.NET Core yang membolehkan anda menerapkan prinsip pemisahan masalah dan pengasingan antara muka. Dalam catatan yang akan datang di sini mengenai corak pilihan, saya akan membincangkan pengesahan konfigurasi dan konfigurasi yang boleh dimuat semula dengan fokus khusus pada antara muka IOptionsMonitor. Sehingga itu, anda boleh membaca lebih lanjut mengenai corak pilihan dalam dokumentasi dalam talian Microsoft di sini. 

Cara melakukan lebih banyak perkara dalam ASP.NET dan ASP.NET Core:

  • Cara menggunakan cache dalam memori di ASP.NET Core
  • Cara menangani ralat dalam API Web ASP.NET
  • Cara menyampaikan beberapa parameter ke kaedah pengawal API Web
  • Cara log metadata permintaan dan respons di API Web ASP.NET
  • Cara bekerja dengan HttpModules di ASP.NET
  • Versi lanjutan dalam ASP.NET Core Web API
  • Cara menggunakan suntikan kebergantungan dalam ASP.NET Core
  • Cara bekerja dengan sesi di ASP.NET
  • Cara bekerja dengan HTTPHandlers di ASP.NET
  • Cara menggunakan IHostedService dalam ASP.NET Core
  • Cara menggunakan perkhidmatan WCF SOAP di ASP.NET Core
  • Cara meningkatkan prestasi aplikasi ASP.NET Core
  • Cara menggunakan API Web Teras ASP.NET menggunakan RestSharp
  • Cara bekerja dengan log masuk di ASP.NET Core
  • Cara menggunakan MediatR dalam ASP.NET Core
  • Cara bekerja dengan keadaan sesi di ASP.NET Core
  • Cara menggunakan Nancy di ASP.NET Core
  • Fahami pengikatan parameter dalam ASP.NET Web API
  • Cara memuat naik fail dalam ASP.NET Core MVC
  • Cara melaksanakan pengendalian pengecualian global dalam ASP.NET Core Web API
  • Cara melaksanakan pemeriksaan kesihatan di ASP.NET Core
  • Amalan terbaik dalam membuat cache di ASP.NET
  • Cara menggunakan pesanan Apache Kafka di .NET
  • Cara mengaktifkan CORS pada API Web anda
  • Bila hendak menggunakan WebClient vs. HttpClient vs. HttpWebRequest
  • Cara bekerjasama dengan Redis Cache di .NET
  • Bila hendak menggunakan Task.WaitAll vs. Task.WhenAll in .NET