Cvičení – registrace a využívání služeb

Dokončeno

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.

  1. Spusťte editor Visual Studio Code.

  2. Stisknutím kombinace kláves Ctrl+Shift+P otevřete paletu příkazů.

  3. Vyhledejte a vyberte .NET: Nový projekt....

  4. Vyhledejte a vyberte ASP.NET Core Empty.

    Snímek obrazovky palety příkazů s vybranou možností ASP.NET Prázdné jádro

  5. Vyberte nebo vytvořte složku pro nový projekt.

  6. Pojmenujte novou aplikaci MyWebApp.

  7. Výběrem možnosti Vytvořit projekt vytvořte projekt.

  8. Po otevření nového projektu rozbalte Solution Explorer podokno a zobrazte soubory projektu.

    Snímek obrazovky podokna Průzkumníka řešení ve Visual Studio Code.

Spustit aplikaci

Otestujte aplikaci, abyste měli jistotu, že běží.

  1. V editoru Visual Studio Code stisknutím klávesy F5 sestavte a spusťte aplikaci.

    1. Po zobrazení výzvy vyberte jako ladicí program jazyk C# .
    2. 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!"

  2. 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.

  1. 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.

  2. Klikněte pravým tlačítkem na složku Služby . Vyberte Nový soubor. Pojmenujte soubor WelcomeService.cs.

  3. 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 WelcomeService třídu pomocí GetWelcomeMessage metody, 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 _serviceCreated a _serviceId pole 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.

  1. Otevřete soubor Program.cs .

  2. Na začátek souboru přidejte následující direktivu:

    using MyWebApp.Services;
    

    Tato direktiva řeší odkaz na WelcomeService třídu.

  3. Bezprostředně za var builder = WebApplication.CreateBuilder(args); řádek přidejte následující kód:

    builder.Services.AddSingleton<WelcomeService>();
    

    WebApplication.CreateBuilder vytvoří novou instanci WebApplicationBuilder třídy s názvem builder. Předchozí kód zaregistruje WelcomeService třídu v kontejneru služby s jednou životností.

  4. 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žbou WelcomeService .

    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

  1. Uložte všechny změny a spusťte aplikaci jako předtím.
  2. 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 .
  3. 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.

  1. V podokně Průzkumník klikněte pravým tlačítkem myši na projekt MyWebApp. Vyberte Novou složku. Pojmenujte složku Interfaces.

  2. Klikněte pravým tlačítkem myši na složku Rozhraní . Vyberte Nový soubor. Pojmenujte soubor IWelcomeService.cs.

  3. Obsah IWelcomeService.cs nahraďte následujícím kódem:

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

    Tento kód definuje IWelcomeService rozhraní s metodou GetWelcomeMessage . Všechny služby, které implementují toto rozhraní, musí poskytovat implementaci metody GetWelcomeMessage .

  4. Otevřete soubor Services/WelcomeService.cs .

  5. Na začátek souboru přidejte následující direktivu:

    using MyWebApp.Interfaces;
    

    Tato direktiva vyřeší odkaz na IWelcomeService rozhraní, které přidáte v dalším kroku.

  6. WelcomeService Aktualizujte deklaraci třídy pro implementaci IWelcomeService rozhraní:

    public class WelcomeService : IWelcomeService
    

    Toto je jediná změna, kterou musíte provést pro WelcomeService třídu pro implementaci IWelcomeService rozhraní. Třída WelcomeService již má metodu GetWelcomeMessage , která odpovídá podpisu metody v IWelcomeService rozhraní.

  7. Otevřete soubor Program.cs .

  8. builder.Services.AddSingleton<WelcomeService>(); Aktualizujte řádek na následující kód:

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

    Tento kód zaregistruje WelcomeService třídu v kontejneru služby pomocí IWelcomeService rozhraní.

    Návod

    Představte si to tak, že říkáte: "Když komponenta požádá o , IWelcomeServiceposkytnout instanci WelcomeService."

  9. 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á IWelcomeService místo WelcomeService.

    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í.

  1. Uložte všechny změny a spusťte aplikaci jako předtím.
  2. 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 .
  3. Nechte aplikaci spuštěnou pro další cvičení.