Gyakorlat – Szolgáltatások regisztrálása és felhasználása
ASP.NET Core-alkalmazásoknak gyakran több összetevőn keresztül is el kell érniük ugyanazokat a szolgáltatásokat. ASP.NET Core egy beépített függőséginjektálási tárolót használ az alkalmazás által használt szolgáltatások kezeléséhez.
Csapatának feladata, hogy létrehozhasson egy csupasz webhelyet a vállalat számára. A webhelynek üdvözlő üzenetet kell megjelenítenie a főoldalon. Úgy dönt, hogy létrehoz egy szolgáltatást az üdvözlő üzenet létrehozásához. Ezután regisztrálja a szolgáltatást a szolgáltatástárolóban, hogy az injektálható legyen a szükséges összetevőkbe.
ASP.NET Core-alkalmazás létrehozása
Egy ASP.NET Core-alkalmazásra van szüksége a csapat alkalmazásának szerepéhez. Hozzunk létre egy új ASP.NET Core-alkalmazást a Visual Studio Code C# Dev Kit bővítményével.
Indítsa el a Visual Studio Code-ot.
A parancskatalógus megnyitásához nyomja le a Ctrl+Shift+P billentyűkombinációt.
Keresse meg és válassza a .NET: Új projekt... lehetőséget.
Keressen rá és válassza ki a ASP.NET Core Empty-t.
Jelöljön ki vagy hozzon létre egy mappát az új projekthez.
Nevezze el az új alkalmazást a MyWebAppnak.
Válassza a Projekt létrehozása lehetőséget a projekt létrehozásához.
Amikor megnyílik az új projekt, bontsa ki a
Solution Explorerpanelt a projektfájlok megtekintéséhez.
Az alkalmazás futtatása
Tesztelje az alkalmazást annak ellenőrzéséhez, hogy fut-e.
A Visual Studio Code-ban nyomja le az F5 billentyűt az alkalmazás létrehozásához és futtatásához.
- Amikor a rendszer kéri, válassza a C# lehetőséget hibakeresőként.
- Amikor a rendszer kéri, válassza a C#: MyWebApp [Alapértelmezett konfiguráció] lehetőséget a használni kívánt indítási konfigurációként.
Ez a parancs elindítja az alkalmazást, és egy helyi webkiszolgálón üzemelteti. Megnyílik egy böngészőablak, és megjelenik a "Hello, World!"
Zárja be a böngészőablakot, és állítsa le az alkalmazást a Shift+F5 billentyűkombináció lenyomásával a Visual Studio Code-ban.
Szolgáltatás létrehozása
Most, hogy már rendelkezik egy működő alkalmazással, hozzunk létre egy szolgáltatást, amely üdvözlő üzenetet hoz létre a főoldalhoz.
Kattintson a jobb gombbal a MyWebApp projektre az Explorer panelen. Válassza az Új mappa lehetőséget. Nevezze el a services mappát.
Kattintson a jobb gombbal a Szolgáltatások mappára. Válassza az Új fájl lehetőséget. Nevezze el a fájlt WelcomeService.cs.
Cserélje le a WelcomeService.cs tartalmát a következő kódra:
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}"; } }Ez a kód egy
WelcomeServiceüdvözlő üzenetet generáló metódussal rendelkezőGetWelcomeMessageosztályt határoz meg. Az üzenet tartalmazza a szolgáltatás létrehozásának aktuális időpontját, valamint a szolgáltatás minden példányának egyedi azonosítóját.Vegye figyelembe, hogy az és
_serviceCreateda_serviceIdmezők a konstruktorban vannak beállítva, és soha nem változnak a szolgáltatáspéldány élettartama alatt.
A szolgáltatás regisztrálása
Most, hogy rendelkezik egy szolgáltatással, regisztrálnia kell azt a szolgáltatástárolóban.
Nyissa meg a Program.cs fájlt.
Adja hozzá a következő irányelvet a fájl elejéhez:
using MyWebApp.Services;Ez az irányelv feloldja az osztályra
WelcomeServicevaló hivatkozást.Közvetlenül a
var builder = WebApplication.CreateBuilder(args);sor után adja hozzá a következő kódot:builder.Services.AddSingleton<WelcomeService>();WebApplication.CreateBuilderlétrehoz egy új példányt aWebApplicationBuilderbuilder. Az előző kód egyetlentonos élettartammal regisztrálja azWelcomeServiceosztályt a szolgáltatástárolóban.Módosítsa a
app.MapGet("/", () => "Hello World!");sort a következő kódra:app.MapGet("/", (WelcomeService welcomeService) => welcomeService.GetWelcomeMessage());Ez a kód leképez egy HTTP GET kérést a fő URL-címre (
/) egy olyan meghatalmazotthoz, aki visszaadja aWelcomeServiceszolgáltatás által létrehozott üdvözlő üzenetet.A Program.cs fájlnak így kell kinéznie:
using MyWebApp.Services; var builder = WebApplication.CreateBuilder(args); builder.Services.AddSingleton<WelcomeService>(); var app = builder.Build(); app.MapGet("/", (WelcomeService welcomeService) => welcomeService.GetWelcomeMessage()); app.Run();
A módosítások tesztelése
- Mentse az összes módosítást, és futtassa az alkalmazást a korábbiakhoz hasonlóan.
- Amikor megnyílik a böngészőablak, vegye figyelembe, hogy a gyökér URL-cím megjeleníti a
WelcomeServiceszolgáltatás által létrehozott üdvözlő üzenetet. - Zárja be a böngészőablakot, és állítsa le az alkalmazást a Shift+F5 billentyűkombináció lenyomásával a Visual Studio Code-ban.
Felület használata
A csapat áttekinti a kódot, és egy másik fejlesztő azt javasolja, hogy használjon egy felületet a szolgáltatások regisztrálásához, mivel ez a megközelítés rugalmasabbá és könnyebben karbantarthatóvá teszi a kódot.
Kattintson a jobb gombbal a MyWebApp projektre az Explorer panelen. Válassza az Új mappa lehetőséget. Nevezze el a mappát Interfaces.
Kattintson a jobb gombbal az Interfészek mappára. Válassza az Új fájl lehetőséget. Nevezze el a fájlt IWelcomeService.cs.
Cserélje le a IWelcomeService.cs tartalmát a következő kódra:
namespace MyWebApp.Interfaces public interface IWelcomeService { string GetWelcomeMessage(); }Ez a kód egy
IWelcomeServicemetódussal rendelkezőGetWelcomeMessagefelületet határoz meg. Az interfészt megvalósító szolgáltatásoknak implementálást kell biztosítaniuk aGetWelcomeMessagemódszerhez.Nyissa meg a Services/WelcomeService.cs fájlt.
Adja hozzá a következő irányelvet a fájl elejéhez:
using MyWebApp.Interfaces;Ez az irányelv feloldja a következő lépésben hozzáadott felületre való hivatkozást
IWelcomeService.Frissítse az
WelcomeServiceosztálydeklarációt azIWelcomeServiceinterfész implementálásához:public class WelcomeService : IWelcomeServiceEz az egyetlen módosítás, amelyet az osztályon kell elvégeznie a
WelcomeServiceIWelcomeServicefelület implementálásához. AzWelcomeServiceosztály már rendelkezik egyGetWelcomeMessageolyan metódussal, amely megfelel a felületen található metódus-aláírásnakIWelcomeService.Nyissa meg a Program.cs fájlt.
Frissítse a
builder.Services.AddSingleton<WelcomeService>();sort a következő kódra:builder.Services.AddSingleton<IWelcomeService, WelcomeService>();Ez a kód regisztrálja az osztályt
WelcomeServicea szolgáltatástárolóban azIWelcomeServiceinterfész használatával.Tipp.
Gondoljon erre úgy, mint a következőre: "Amikor egy összetevő kér egy példányt
IWelcomeService, adjon meg egy példánytWelcomeService."Frissítse a
app.MapGet("/", (WelcomeService welcomeService) => welcomeService.GetWelcomeMessage());sort a következő kódra:app.MapGet("/", (IWelcomeService welcomeService) => welcomeService.GetWelcomeMessage());A névtelen függvény mostantól egy helyett egy
IWelcomeServiceWelcomeService.A Program.cs fájlnak így kell kinéznie:
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();
A módosítások tesztelése
Teszteljük az alkalmazást, hogy továbbra is a várt módon működjön.
- Mentse az összes módosítást, és futtassa az alkalmazást a korábbiakhoz hasonlóan.
- Amikor megnyílik a böngészőablak, vegye figyelembe, hogy a gyökér URL-cím megjeleníti a
WelcomeServiceszolgáltatás által létrehozott üdvözlő üzenetet. - Hagyja futni az alkalmazást a következő gyakorlatban.