Cvičení – registrace a využívání služeb
ASP.NET aplikace Core často potřebují přístup ke stejným službám napříč několika komponentami. ASP.NET Core ke správě služeb, které aplikace používá, používá integrovaný kontejner injektáže závislostí.
Váš tým vás provede úkoly, abyste vytvořili holý web pro vaši společnost. Web by měl na hlavní stránce zobrazit uvítací zprávu. Rozhodnete se vytvořit službu, která vygeneruje uvítací zprávu. Pak zaregistrujete službu v kontejneru služby, aby ji bylo možné vložit do komponent, které ji potřebují.
Vytvoření aplikace v ASP.NET Core
Abyste mohli hrát roli aplikace vašeho týmu, potřebujete aplikaci ASP.NET Core. Pojďme vytvořit novou aplikaci ASP.NET Core pomocí rozšíření C# Dev Kit v editoru Visual Studio Code.
Spusťte editor Visual Studio Code.
Stisknutím kombinace kláves Ctrl+Shift+P otevřete paletu příkazů.
Vyhledejte a vyberte .NET: Nový projekt....
Vyhledejte a vyberte ASP.NET Core Empty.
Vyberte nebo vytvořte složku pro nový projekt.
Pojmenujte novou aplikaci MyWebApp.
Výběrem možnosti Vytvořit projekt vytvořte projekt.
Po otevření nového projektu rozbalte
Solution Explorerpodokno a zobrazte soubory projektu.
Spustit aplikaci
Otestujte aplikaci, abyste měli jistotu, že běží.
V editoru Visual Studio Code stisknutím klávesy F5 sestavte a spusťte aplikaci.
- Po zobrazení výzvy vyberte jako ladicí program jazyk C# .
- Po zobrazení výzvy vyberte C#: MyWebApp [Výchozí konfigurace] jako konfiguraci spuštění, která se má použít.
Tento příkaz spustí aplikaci a hostuje ji na místním webovém serveru. Otevře se okno prohlížeče a zobrazí se "Hello, World!"
Zavřete okno prohlížeče a aplikaci zastavte stisknutím shift+F5 v editoru Visual Studio Code.
Vytvoření služby
Teď, když máte funkční aplikaci, vytvoříme službu, která vygeneruje uvítací zprávu pro hlavní stránku.
V podokně Průzkumník klikněte pravým tlačítkem myši na projekt MyWebApp. Vyberte Novou složku. Pojmenujte složku Služby.
Klikněte pravým tlačítkem na složku Služby . Vyberte Nový soubor. Pojmenujte soubor WelcomeService.cs.
Obsah WelcomeService.cs nahraďte následujícím kódem:
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}"; } }Tento kód definuje
WelcomeServicetřídu pomocíGetWelcomeMessagemetody, která generuje uvítací zprávu. Zpráva obsahuje aktuální čas vytvoření služby a jedinečný identifikátor pro každou instanci služby.Všimněte si, že pole
_serviceCreateda_serviceIdpole jsou nastaveny v konstruktoru a nikdy se nemění po dobu životnosti instance služby.
Registrace služby
Teď, když máte službu, musíte ji zaregistrovat v kontejneru služby.
Otevřete soubor Program.cs .
Na začátek souboru přidejte následující direktivu:
using MyWebApp.Services;Tato direktiva řeší odkaz na
WelcomeServicetřídu.Bezprostředně za
var builder = WebApplication.CreateBuilder(args);řádek přidejte následující kód:builder.Services.AddSingleton<WelcomeService>();WebApplication.CreateBuildervytvoří novou instanciWebApplicationBuildertřídy s názvembuilder. Předchozí kód zaregistrujeWelcomeServicetřídu v kontejneru služby s jednou životností.app.MapGet("/", () => "Hello World!");Změňte řádek na následující kód:app.MapGet("/", (WelcomeService welcomeService) => welcomeService.GetWelcomeMessage());Tento kód mapuje požadavek HTTP GET na kořenovou adresu URL (
/) na delegáta, který vrátí uvítací zprávu vygenerovanou službouWelcomeService.Soubor Program.cs by měl vypadat takto:
using MyWebApp.Services; var builder = WebApplication.CreateBuilder(args); builder.Services.AddSingleton<WelcomeService>(); var app = builder.Build(); app.MapGet("/", (WelcomeService welcomeService) => welcomeService.GetWelcomeMessage()); app.Run();
Otestování změn
- Uložte všechny změny a spusťte aplikaci jako předtím.
- Po otevření okna prohlížeče si všimněte, že kořenová adresa URL zobrazí uvítací zprávu vygenerovanou službou
WelcomeService. - Zavřete okno prohlížeče a aplikaci zastavte stisknutím shift+F5 v editoru Visual Studio Code.
Použití rozhraní
Váš tým zkontroluje váš kód a jiný vývojář vám navrhne, abyste k registraci služeb použili rozhraní, protože tento přístup usnadňuje a flexibilnější údržbu kódu.
V podokně Průzkumník klikněte pravým tlačítkem myši na projekt MyWebApp. Vyberte Novou složku. Pojmenujte složku Interfaces.
Klikněte pravým tlačítkem myši na složku Rozhraní . Vyberte Nový soubor. Pojmenujte soubor IWelcomeService.cs.
Obsah IWelcomeService.cs nahraďte následujícím kódem:
namespace MyWebApp.Interfaces public interface IWelcomeService { string GetWelcomeMessage(); }Tento kód definuje
IWelcomeServicerozhraní s metodouGetWelcomeMessage. Všechny služby, které implementují toto rozhraní, musí poskytovat implementaci metodyGetWelcomeMessage.Otevřete soubor Services/WelcomeService.cs .
Na začátek souboru přidejte následující direktivu:
using MyWebApp.Interfaces;Tato direktiva vyřeší odkaz na
IWelcomeServicerozhraní, které přidáte v dalším kroku.WelcomeServiceAktualizujte deklaraci třídy pro implementaciIWelcomeServicerozhraní:public class WelcomeService : IWelcomeServiceToto je jediná změna, kterou musíte provést pro
WelcomeServicetřídu pro implementaciIWelcomeServicerozhraní. TřídaWelcomeServicejiž má metoduGetWelcomeMessage, která odpovídá podpisu metody vIWelcomeServicerozhraní.Otevřete soubor Program.cs .
builder.Services.AddSingleton<WelcomeService>();Aktualizujte řádek na následující kód:builder.Services.AddSingleton<IWelcomeService, WelcomeService>();Tento kód zaregistruje
WelcomeServicetřídu v kontejneru služby pomocíIWelcomeServicerozhraní.Návod
Představte si to tak, že říkáte: "Když komponenta požádá o ,
IWelcomeServiceposkytnout instanciWelcomeService."app.MapGet("/", (WelcomeService welcomeService) => welcomeService.GetWelcomeMessage());Aktualizujte řádek na následující kód:app.MapGet("/", (IWelcomeService welcomeService) => welcomeService.GetWelcomeMessage());Anonymní funkce nyní očekává
IWelcomeServicemístoWelcomeService.Soubor Program.cs by měl vypadat takto:
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();
Otestování změn
Otestujeme aplikaci, abychom měli jistotu, že stále funguje podle očekávání.
- Uložte všechny změny a spusťte aplikaci jako předtím.
- Po otevření okna prohlížeče si všimněte, že kořenová adresa URL zobrazí uvítací zprávu vygenerovanou službou
WelcomeService. - Nechte aplikaci spuštěnou pro další cvičení.