Latihan - Mendaftarkan dan menggunakan layanan
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.
Luncurkan Visual Studio Code.
Tekan Ctrl+Shift+P untuk membuka palet perintah.
Cari dan pilih .NET: Proyek Baru....
Cari dan pilih ASP.NET Core Empty.
Pilih atau buat folder untuk proyek baru.
Beri nama aplikasi baru MyWebApp.
Pilih Buat proyek untuk membuat proyek.
Saat proyek baru terbuka, perluas
Solution Explorerpanel untuk menampilkan file proyek.
Menjalankan aplikasi
Uji aplikasi untuk memastikan aplikasi berjalan.
Di Visual Studio Code, tekan F5 untuk membuat dan menjalankan aplikasi.
- Saat diminta, pilih C# sebagai debugger.
- 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!"
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.
Klik kanan proyek MyWebApp di panel Explorer . Pilih Folder Baru. Beri nama folder Layanan.
Klik kanan folder Layanan . Pilih File Baru. Beri nama file WelcomeService.cs.
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
WelcomeServicekelas denganGetWelcomeMessagemetode yang menghasilkan pesan selamat datang. Pesan mencakup waktu saat ini ketika layanan dibuat, serta pengidentifikasi unik untuk setiap instans layanan.Perhatikan bahwa
_serviceCreatedbidang dan_serviceIddiatur dalam konstruktor, dan tidak pernah berubah selama masa pakai instans layanan.
Mendaftarkan layanan
Sekarang setelah Anda memiliki layanan, Anda perlu mendaftarkannya dengan kontainer layanan.
Buka file Program.cs .
Tambahkan direktif berikut ke bagian atas file:
using MyWebApp.Services;Direktif ini menyelesaikan referensi ke
WelcomeServicekelas .Segera setelah
var builder = WebApplication.CreateBuilder(args);baris, tambahkan kode berikut:builder.Services.AddSingleton<WelcomeService>();WebApplication.CreateBuildermembuat instans baru kelas yangWebApplicationBuilderdisebutbuilder. Kode sebelumnya mendaftarkanWelcomeServicekelas dengan kontainer layanan dengan masa pakai singleton.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 olehWelcomeServicelayanan.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
- Simpan semua perubahan Anda dan jalankan aplikasi seperti sebelumnya.
- Saat jendela browser terbuka, perhatikan URL akar menampilkan pesan selamat datang yang dihasilkan oleh
WelcomeServicelayanan. - 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.
Klik kanan proyek MyWebApp di panel Explorer . Pilih Folder Baru. Beri nama folder Antarmuka.
Klik kanan pada folder Antarmuka . Pilih File Baru. Beri nama file IWelcomeService.cs.
Ganti konten IWelcomeService.cs dengan kode berikut:
namespace MyWebApp.Interfaces public interface IWelcomeService { string GetWelcomeMessage(); }Kode ini mendefinisikan
IWelcomeServiceantarmuka denganGetWelcomeMessagemetode . Setiap layanan yang mengimplementasikan antarmuka ini harus menyediakan implementasi untuk metode .GetWelcomeMessageBuka Services/WelcomeService.cs file.
Tambahkan direktif berikut ke bagian atas file:
using MyWebApp.Interfaces;Direktif ini menyelesaikan referensi ke antarmuka yang
IWelcomeServiceAnda tambahkan di langkah berikutnya.WelcomeServicePerbarui deklarasi kelas untuk mengimplementasikanIWelcomeServiceantarmuka:public class WelcomeService : IWelcomeServiceIni adalah satu-satunya perubahan yang perlu Anda lakukan pada
WelcomeServicekelas untuk mengimplementasikanIWelcomeServiceantarmuka. KelasWelcomeServicesudah memilikiGetWelcomeMessagemetode yang cocok dengan tanda tangan metode diIWelcomeServiceantarmuka.Buka file Program.cs .
builder.Services.AddSingleton<WelcomeService>();Perbarui baris ke kode berikut:builder.Services.AddSingleton<IWelcomeService, WelcomeService>();Kode ini mendaftarkan
WelcomeServicekelas dengan kontainer layanan menggunakanIWelcomeServiceantarmuka .Petunjuk / Saran
Anggaplah ini mengatakan, "Ketika komponen meminta , berikan instans
IWelcomeServiceWelcomeService."app.MapGet("/", (WelcomeService welcomeService) => welcomeService.GetWelcomeMessage());Perbarui baris ke kode berikut:app.MapGet("/", (IWelcomeService welcomeService) => welcomeService.GetWelcomeMessage());Fungsi anonim sekarang mengharapkan
IWelcomeServicealih-alihWelcomeService.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.
- Simpan semua perubahan Anda dan jalankan aplikasi seperti sebelumnya.
- Saat jendela browser terbuka, perhatikan URL akar menampilkan pesan selamat datang yang dihasilkan oleh
WelcomeServicelayanan. - Biarkan aplikasi berjalan untuk latihan berikutnya.