Latihan - Mendaftarkan dan menggunakan layanan

Selesai

ASP.NET aplikasi Core sering kali memiliki kebutuhan untuk mengakses layanan yang sama di beberapa komponen. ASP.NET Core menggunakan kontainer injeksi dependensi bawaan untuk mengelola layanan yang digunakan aplikasi.

Tim Anda memimpin tugas Anda untuk membuat situs web barebones untuk perusahaan Anda. Situs web harus menampilkan pesan selamat datang di halaman utama. Anda memutuskan untuk membuat layanan untuk menghasilkan pesan selamat datang. Anda kemudian akan mendaftarkan layanan dengan kontainer layanan sehingga dapat disuntikkan ke komponen yang membutuhkannya.

Membuat aplikasi ASP.NET Core

Anda memerlukan aplikasi ASP.NET Core untuk memainkan peran aplikasi tim Anda. Mari kita buat aplikasi ASP.NET Core baru menggunakan ekstensi C# Dev Kit di Visual Studio Code.

  1. Luncurkan Visual Studio Code.

  2. Tekan Ctrl+Shift+P untuk membuka palet perintah.

  3. Cari dan pilih .NET: Proyek Baru....

  4. Cari dan pilih ASP.NET Core Empty.

    Cuplikan layar palet perintah dengan ASP.NET Core Empty dipilih.

  5. Pilih atau buat folder untuk proyek baru.

  6. Beri nama aplikasi baru MyWebApp.

  7. Pilih Buat proyek untuk membuat proyek.

  8. Saat proyek baru terbuka, perluas Solution Explorer panel untuk menampilkan file proyek.

    Cuplikan layar panel Penjelajah Solusi di Visual Studio Code.

Menjalankan aplikasi

Uji aplikasi untuk memastikan aplikasi berjalan.

  1. Di Visual Studio Code, tekan F5 untuk membuat dan menjalankan aplikasi.

    1. Saat diminta, pilih C# sebagai debugger.
    2. Saat diminta, pilih C#: MyWebApp [Konfigurasi Default] sebagai konfigurasi peluncuran yang akan digunakan.

    Perintah ini memulai aplikasi dan menghostingnya di server web lokal. Jendela browser terbuka dan menampilkan, "Halo, Dunia!"

  2. Tutup jendela browser dan hentikan aplikasi dengan menekan Shift+F5 di Visual Studio Code.

Membuat layanan

Sekarang setelah Anda memiliki aplikasi yang berfungsi, mari kita buat layanan yang menghasilkan pesan selamat datang untuk halaman utama.

  1. Klik kanan proyek MyWebApp di panel Explorer . Pilih Folder Baru. Beri nama folder Layanan.

  2. Klik kanan folder Layanan . Pilih File Baru. Beri nama file WelcomeService.cs.

  3. Ganti konten WelcomeService.cs dengan kode berikut:

    namespace MyWebApp.Services;
    
    public class WelcomeService : IWelcomeService
    {
    
        DateTime _serviceCreated;
        Guid _serviceId;
    
        public WelcomeService()
        {
            _serviceCreated = DateTime.Now;
            _serviceId = Guid.NewGuid();                
        }
    
        public string GetWelcomeMessage()
        {
            return $"Welcome to Contoso! The current time is {_serviceCreated}. This service instance has an ID of {_serviceId}";
        }
    }
    

    Kode ini mendefinisikan WelcomeService kelas dengan GetWelcomeMessage metode yang menghasilkan pesan selamat datang. Pesan mencakup waktu saat ini ketika layanan dibuat, serta pengidentifikasi unik untuk setiap instans layanan.

    Perhatikan bahwa _serviceCreated bidang dan _serviceId diatur dalam konstruktor, dan tidak pernah berubah selama masa pakai instans layanan.

Mendaftarkan layanan

Sekarang setelah Anda memiliki layanan, Anda perlu mendaftarkannya dengan kontainer layanan.

  1. Buka file Program.cs .

  2. Tambahkan direktif berikut ke bagian atas file:

    using MyWebApp.Services;
    

    Direktif ini menyelesaikan referensi ke WelcomeService kelas .

  3. Segera setelah var builder = WebApplication.CreateBuilder(args); baris, tambahkan kode berikut:

    builder.Services.AddSingleton<WelcomeService>();
    

    WebApplication.CreateBuilder membuat instans baru kelas yang WebApplicationBuilder disebut builder. Kode sebelumnya mendaftarkan WelcomeService kelas dengan kontainer layanan dengan masa pakai singleton.

  4. app.MapGet("/", () => "Hello World!"); Ubah baris ke kode berikut:

    app.MapGet("/", (WelcomeService welcomeService) => welcomeService.GetWelcomeMessage());
    

    Kode ini memetakan permintaan HTTP GET ke URL akar (/) ke delegasi yang mengembalikan pesan selamat datang yang dihasilkan oleh WelcomeService layanan.

    File Program.cs Anda akan terlihat seperti ini:

    using MyWebApp.Services;
    
    var builder = WebApplication.CreateBuilder(args);
    builder.Services.AddSingleton<WelcomeService>();
    
    var app = builder.Build();
    
    app.MapGet("/", (WelcomeService welcomeService) => welcomeService.GetWelcomeMessage());
    
    app.Run();
    

Menguji perubahan

  1. Simpan semua perubahan Anda dan jalankan aplikasi seperti sebelumnya.
  2. Saat jendela browser terbuka, perhatikan URL akar menampilkan pesan selamat datang yang dihasilkan oleh WelcomeService layanan.
  3. Tutup jendela browser dan hentikan aplikasi dengan menekan Shift+F5 di Visual Studio Code.

Menggunakan antarmuka

Tim Anda meninjau kode Anda, dan pengembang lain menyarankan agar Anda menggunakan antarmuka untuk mendaftarkan layanan, karena pendekatan ini membuat kode lebih fleksibel dan lebih mudah dipertahankan.

  1. Klik kanan proyek MyWebApp di panel Explorer . Pilih Folder Baru. Beri nama folder Antarmuka.

  2. Klik kanan pada folder Antarmuka . Pilih File Baru. Beri nama file IWelcomeService.cs.

  3. Ganti konten IWelcomeService.cs dengan kode berikut:

    namespace MyWebApp.Interfaces
    
    public interface IWelcomeService
    {
        string GetWelcomeMessage();
    }
    

    Kode ini mendefinisikan IWelcomeService antarmuka dengan GetWelcomeMessage metode . Setiap layanan yang mengimplementasikan antarmuka ini harus menyediakan implementasi untuk metode .GetWelcomeMessage

  4. Buka Services/WelcomeService.cs file.

  5. Tambahkan direktif berikut ke bagian atas file:

    using MyWebApp.Interfaces;
    

    Direktif ini menyelesaikan referensi ke antarmuka yang IWelcomeService Anda tambahkan di langkah berikutnya.

  6. WelcomeService Perbarui deklarasi kelas untuk mengimplementasikan IWelcomeService antarmuka:

    public class WelcomeService : IWelcomeService
    

    Ini adalah satu-satunya perubahan yang perlu Anda lakukan pada WelcomeService kelas untuk mengimplementasikan IWelcomeService antarmuka. Kelas WelcomeService sudah memiliki GetWelcomeMessage metode yang cocok dengan tanda tangan metode di IWelcomeService antarmuka.

  7. Buka file Program.cs .

  8. builder.Services.AddSingleton<WelcomeService>(); Perbarui baris ke kode berikut:

    builder.Services.AddSingleton<IWelcomeService, WelcomeService>();
    

    Kode ini mendaftarkan WelcomeService kelas dengan kontainer layanan menggunakan IWelcomeService antarmuka .

    Petunjuk / Saran

    Anggaplah ini mengatakan, "Ketika komponen meminta , berikan instans IWelcomeServiceWelcomeService."

  9. app.MapGet("/", (WelcomeService welcomeService) => welcomeService.GetWelcomeMessage()); Perbarui baris ke kode berikut:

    app.MapGet("/", (IWelcomeService welcomeService) => welcomeService.GetWelcomeMessage());
    

    Fungsi anonim sekarang mengharapkan IWelcomeService alih-alih WelcomeService.

    File Program.cs Anda akan terlihat seperti ini:

    using MyWebApp.Interfaces;
    using MyWebApp.Services;
    
    var builder = WebApplication.CreateBuilder(args);
    builder.Services.AddSingleton<IWelcomeService, WelcomeService>();
    
    var app = builder.Build();
    
    app.MapGet("/", (IWelcomeService welcomeService) => welcomeService.GetWelcomeMessage());
    
    app.Run();
    

Menguji perubahan

Mari kita uji aplikasi untuk memastikan aplikasi masih berfungsi seperti yang diharapkan.

  1. Simpan semua perubahan Anda dan jalankan aplikasi seperti sebelumnya.
  2. Saat jendela browser terbuka, perhatikan URL akar menampilkan pesan selamat datang yang dihasilkan oleh WelcomeService layanan.
  3. Biarkan aplikasi berjalan untuk latihan berikutnya.