Cara menggunakan pola opsi di ASP.NET Core

Saat bekerja di ASP.NET Core Anda akan sering menentukan pengaturan aplikasi Anda, menyimpannya dalam beberapa file, dan kemudian mengambil pengaturan ini ketika aplikasi membutuhkannya. Biasanya, Anda akan mendaftarkan dependensi Anda dalam metode ConfigureServices pada kelas Startup. Anda dapat menentukan setelan aplikasi Anda di appsettings.json atau beberapa file .json lainnya dan kemudian memanfaatkan injeksi ketergantungan melalui IOptions untuk membaca setelan ini di aplikasi Anda.

Pola opsi menyediakan cara yang elegan untuk menambahkan pengaturan yang diketik dengan kuat ke aplikasi ASP.NET Core Anda. Pola opsi, yang merupakan ekstensi di atas antarmuka IServiceCollection, memanfaatkan kelas untuk mewakili sekelompok pengaturan terkait. Artikel ini membahas tentang pola opsi, mengapa itu berguna, dan bagaimana pola itu dapat digunakan untuk bekerja dengan data konfigurasi di ASP.NET Core.

Untuk bekerja dengan contoh kode yang disediakan dalam artikel ini, Anda harus menginstal Visual Studio 2019 di sistem Anda. Jika Anda belum memiliki salinannya, Anda dapat mengunduh Visual Studio 2019 di sini.

Buat proyek ASP.NET Core API

Pertama, mari buat proyek ASP.NET Core di Visual Studio. Dengan asumsi Visual Studio 2019 diinstal di sistem Anda, ikuti langkah-langkah yang diuraikan di bawah ini untuk membuat proyek ASP.NET Core API baru di Visual Studio.

  1. Luncurkan Visual Studio IDE.
  2. Klik "Buat proyek baru".
  3. Di jendela "Buat proyek baru", pilih "Aplikasi Web Inti ASP.NET" dari daftar templat yang ditampilkan.
  4. Klik Next.
  5. Di jendela "Configure your new project" yang ditampilkan berikutnya, tentukan nama dan lokasi untuk proyek baru tersebut.
  6. Klik Buat.
  7. Di jendela "Buat Aplikasi Web ASP.NET Core Baru", pilih .NET Core sebagai runtime dan ASP.NET Core 3.0 (atau yang lebih baru) dari daftar drop-down di bagian atas. Saya akan menggunakan ASP.NET Core 3.1 di sini.
  8. Pilih "API" sebagai template proyek untuk membuat aplikasi ASP.NET Core API baru. 
  9. Pastikan kotak centang "Aktifkan Dukungan Docker" dan "Konfigurasi untuk HTTPS" tidak dicentang karena kami tidak akan menggunakan fitur tersebut di sini.
  10. Pastikan Autentikasi disetel sebagai "Tanpa Autentikasi" karena kami juga tidak akan menggunakan autentikasi.
  11. Klik Buat.

Ini akan membuat proyek ASP.NET Core API baru di Visual Studio. Pilih folder solusi Controllers di jendela Solution Explorer dan klik “Add -> Controller…” untuk membuat controller baru bernama DefaultController. Kami akan menggunakan proyek ini di bagian selanjutnya dari artikel ini.

Menerapkan pola opsi di ASP.NET Core

Untuk menggunakan pola opsi di ASP.NET Core, Anda memerlukan paket Microsoft.Extensions.Options.ConfigurationExtensions. Kebetulan, aplikasi ASP.NET Core secara implisit mereferensikan paket Microsoft.Extensions.Options.ConfigurationExtensions secara default.

Saat menggunakan pola opsi, Anda biasanya ingin menggunakan kelas untuk mewakili sekelompok pengaturan terkait. Dalam memisahkan setelan konfigurasi ke dalam kelas-kelas terpisah, aplikasi Anda mematuhi prinsip-prinsip berikut:

  • Pemisahan masalah: Pengaturan yang digunakan di berbagai modul aplikasi dipisahkan satu sama lain. 
  • Prinsip pemisahan antarmuka: Kelas yang mewakili pengaturan ini hanya bergantung pada pengaturan konfigurasi yang akan mereka gunakan. 

Sekarang tulis pengaturan berikut di file appsettings.json.

"DatabaseSettings": {

    "Server": "localhost",

    "Penyedia": "SQL Server",

    "Database": "DemoDb",

    "Port": 23,

    "UserName": "sa",

    "Sandi": "Joydip123"

  }

Perhatikan bahwa kelas konfigurasi Anda harus memiliki properti get dan setel publik. Kami akan memanfaatkan kelas berikut untuk membaca pengaturan ini segera.

 public class DatabaseSettings

    {

        Server string publik {get; set; }

        Penyedia string publik {get; set; }

        Database string publik {get; set; }

        Public int Port {get; set; }

        public string UserName {get; set; }

        public string Password {get; set; }

    }

Anda sekarang dapat menggunakan metode ekstensi Konfigurasi IServiceCollection untuk mengikat kelas pengaturan Anda ke konfigurasi seperti yang ditunjukkan dalam cuplikan kode yang diberikan di bawah ini.

public void ConfigureServices (layanan IServiceCollection)

{

   services.AddControllers ();

   services.Configure

   (opsi => Configuration.GetSection ("DatabaseSettings"). Bind (opsi));

}

Baca data konfigurasi di pengontrol di ASP.NET Core

Sekarang kita akan memanfaatkan DefaultController yang kita buat sebelumnya untuk mendemonstrasikan bagaimana kita dapat membaca data konfigurasi di controller. Antarmuka IOptions memperlihatkan properti Value yang dapat digunakan untuk mengambil instance kelas pengaturan.

Cuplikan kode berikut menunjukkan bagaimana Anda dapat menggunakan kelas DatabaseSettings di pengontrol Anda yang bernama DefaultController. Perhatikan bagaimana injeksi ketergantungan (injeksi konstruktor dalam contoh ini) telah digunakan di sini.

kelas publik DefaultController: ControllerBase

{

   private DatabaseSettings _settings;

   public DefaultController (pengaturan IOptions)

   {

      _settings = settings.Value;

   }

   // Metode tindakan

}

Menerapkan aturan untuk konfigurasi di ASP.NET Core

Anda juga dapat menerapkan aturan tertentu seperti yang ditunjukkan pada cuplikan kode di bawah ini. Perhatikan bagaimana instance kelas helper untuk SQL Server atau MySQL ditambahkan sebagai singleton di sini.

layanan. Konfigurasi (opsi =>

 {

     if (options.Provider.ToLower (). Trim (). Sama dengan ("sqlserver"))

     {

        services.AddSingleton (SqlDbHelper baru ());

     }

     else if (options.Provider.ToLower (). Trim (). Equals ("mysql"))

     {

         services.AddSingleton (MySqlDbHelper baru ());

     }

 });

Dukungan untuk konfigurasi yang sangat diketik adalah fitur hebat di ASP.NET Core yang memungkinkan Anda menerapkan pemisahan masalah dan prinsip pemisahan antarmuka. Di posting mendatang di sini tentang pola opsi, saya akan berbicara tentang validasi konfigurasi dan konfigurasi yang dapat dimuat ulang dengan fokus khusus pada antarmuka IOptionsMonitor. Sampai saat itu, Anda dapat membaca lebih lanjut tentang pola opsi dalam dokumentasi online Microsoft di sini. 

Cara melakukan lebih banyak di ASP.NET dan ASP.NET Core:

  • Cara menggunakan cache dalam memori di ASP.NET Core
  • Bagaimana menangani kesalahan di ASP.NET Web API
  • Cara meneruskan beberapa parameter ke metode pengontrol API Web
  • Cara log permintaan dan respons metadata di ASP.NET Web API
  • Cara bekerja dengan HttpModules di ASP.NET
  • Versi lanjutan dalam ASP.NET Core Web API
  • Cara menggunakan injeksi ketergantungan di ASP.NET Core
  • Cara bekerja dengan sesi di ASP.NET
  • Bagaimana bekerja dengan HTTPHandlers di ASP.NET
  • Cara menggunakan IHostedService di ASP.NET Core
  • Cara menggunakan layanan sabun WCF di ASP.NET Core
  • Cara meningkatkan kinerja aplikasi ASP.NET Core
  • Cara menggunakan ASP.NET Core Web API menggunakan RestSharp
  • Cara bekerja dengan masuk ke ASP.NET Core
  • Cara menggunakan MediatR di ASP.NET Core
  • Cara bekerja dengan status sesi di ASP.NET Core
  • Cara menggunakan Nancy di ASP.NET Core
  • Pahami pengikatan parameter di ASP.NET Web API
  • Cara mengupload file di ASP.NET Core MVC
  • Bagaimana menerapkan penanganan pengecualian global di ASP.NET Core Web API
  • Cara menerapkan pemeriksaan kesehatan di ASP.NET Core
  • Praktik terbaik dalam caching di ASP.NET
  • Cara menggunakan perpesanan Apache Kafka di .NET
  • Cara mengaktifkan CORS di API Web Anda
  • Kapan menggunakan WebClient vs. HttpClient vs. HttpWebRequest
  • Cara bekerja dengan Redis Cache di .NET
  • Kapan menggunakan Task.WaitAll vs. Task.WhenAll di .NET