Oktatóanyag: Gyorsítótár-feltöltési ranglista létrehozása az ASP.NET-en
Ebben az oktatóanyagban frissíti a ContosoTeamStats ASP.NET webalkalmazást--- amely az Azure Cache for Redis ASP.NET rövid útmutatójában van létrehozva--- hogy tartalmazzon egy ranglistát, amely az Azure Cache for Redis gyorsítótár-feltöltési mintáját használja. A mintaalkalmazás megjeleníti az adatbázisból származó csapatstatisztikák listáját. Azt is bemutatja, hogyan használható az Azure Cache for Redis az adatok gyorsítótárból való tárolására és lekérésére a teljesítmény javítása érdekében. Az oktatóanyag elvégzése után egy futó webalkalmazással rendelkezik, amely az Azure Cache for Redis szolgáltatással optimalizált és az Azure-ban üzemeltetett adatbázisba olvas és ír.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Az adatok átviteli sebességének javítása és az adatbázis terhelésének csökkentése adatok tárolásával és beolvasásával az Azure Cache for Redis használatával.
- Egy rendezett Redis-készlet használata az öt legjobb csoport lekérdezéséhez.
- Azure-erőforrások kiépítése egy Resource Manager-sablont használó alkalmazás számára.
- Alkalmazás közzététele az Azure-ban a Visual Studio használatával.
If you don't have an Azure subscription, create an Azure free account before you begin.
Előfeltételek
Az oktatóanyag elvégzéséhez az alábbi előfeltételekkel kell rendelkeznie:
- Ez az oktatóanyag az Azure Cache for Redis ASP.NET rövid útmutatójában folytatódik. Ha még nem tette meg, kövesse a rövid útmutató utasításait.
- Telepítse a Visual Studio 2019-et a következő számítási feladatokkal:
- ASP.NET és webfejlesztés
- Azure-fejlesztés
- .NET asztali fejlesztés az SQL Server Express LocalDB vagy az SQL Server 2017 Express kiadásának használatával.
Ranglista hozzáadása a projekthez
Az oktatóanyag ezen szakaszában a ContosoTeamStats projektet fogja konfigurálni egy ranglistával, amely képzeletbeli csapatok győzelmeinek, vereségeinek és döntetlenjeinek statisztikáit tartalmazza.
Az Entity Framework hozzáadása a projekthez
Nyissa meg a Visual Studióban az Azure Cache for Redis ASP.NET rövid útmutatójában létrehozott ContosoTeamStats-megoldást.
Válassza az Eszközök > NuGet Csomagkezelő > Csomagkezelő konzol lehetőséget.
Az EntityFramework telepítéséhez futtassa a következő parancsot a Csomagkezelő konzol ablakából:
Install-Package EntityFramework
A csomaggal kapcsolatos további információt az EntityFramework NuGet-oldalon talál.
A csapatmodell hozzáadása
Kattintson a jobb gombbal a Models (Modellek) elemre a Solution Explorer (Megoldáskezelő) területén, és válassza az Add (Hozzáadás), Class (Osztály) lehetőségeket.
Adja meg
Team
az osztály nevét, és válassza a Hozzáadás lehetőséget.A Team.cs fájl elején cserélje le a
using
utasításokat az alábbiusing
utasításokra:using System; using System.Collections.Generic; using System.Data.Entity; using System.Data.Entity.SqlServer;
Cserélje le az
Team
osztály definícióját az alábbi kódrészletre, amely egy frissítettTeam
osztálydefiníciót és néhány más Entity Framework-segédosztályt tartalmaz. Az oktatóanyag a Code First nevű Entity Framework-módszert használja. Ezzel a módszerrel az Entity Framework a kódból tudja létrehozni az adatbázist. További információk a jelen oktatóanyagban használt, Code First nevű Entity Framework-megközelítésról: Code First alkalmazása egy új adatbázisra.public class Team { public int ID { get; set; } public string Name { get; set; } public int Wins { get; set; } public int Losses { get; set; } public int Ties { get; set; } static public void PlayGames(IEnumerable<Team> teams) { // Simple random generation of statistics. Random r = new Random(); foreach (var t in teams) { t.Wins = r.Next(33); t.Losses = r.Next(33); t.Ties = r.Next(0, 5); } } } public class TeamContext : DbContext { public TeamContext() : base("TeamContext") { } public DbSet<Team> Teams { get; set; } } public class TeamInitializer : CreateDatabaseIfNotExists<TeamContext> { protected override void Seed(TeamContext context) { var teams = new List<Team> { new Team{Name="Adventure Works Cycles"}, new Team{Name="Alpine Ski House"}, new Team{Name="Blue Yonder Airlines"}, new Team{Name="Coho Vineyard"}, new Team{Name="Contoso, Ltd."}, new Team{Name="Fabrikam, Inc."}, new Team{Name="Lucerne Publishing"}, new Team{Name="Northwind Traders"}, new Team{Name="Consolidated Messenger"}, new Team{Name="Fourth Coffee"}, new Team{Name="Graphic Design Institute"}, new Team{Name="Nod Publishers"} }; Team.PlayGames(teams); teams.ForEach(t => context.Teams.Add(t)); context.SaveChanges(); } } public class TeamConfiguration : DbConfiguration { public TeamConfiguration() { SetExecutionStrategy("System.Data.SqlClient", () => new SqlAzureExecutionStrategy()); } }
A Solution Explorer (Megoldáskezelő) felületén kattintson duplán a Web.config fájlra annak megnyitásához.
A
configuration
szakaszon belül adja hozzá a következőconnectionStrings
szakaszt. A kapcsolati sztring nevének meg kell egyeznie az Entity Framework-adatbáziskörnyezet osztályának nevével, amely a következő:TeamContext
.Ez a kapcsolati sztring feltételezi, hogy teljesítette az előfeltételeket, és telepítette azt az SQL Server Express LocalDB-t, amely a Visual Studio 2019-ben telepített .NET asztali fejlesztési számítási feladat része.
<connectionStrings> <add name="TeamContext" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Teams.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings>
A következő példa bemutatja az új
connectionStrings
szakaszt, amely aconfigSections
szakaszt követi aconfiguration
szakaszban:<configuration> <configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <connectionStrings> <add name="TeamContext" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Teams.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> ...
A TeamsController és a nézetek hozzáadása
Hozza létre a projektet a Visual Studióban.
A Solution Explorerben (Megoldáskezelőben) kattintson a jobb gombbal a Controllers (Vezérlők) mappára, majd válassza az Add (Hozzáadás), Controller (Vezérlő) lehetőségeket.
Válassza az MVC 5 Vezérlő nézetekkel, az Entity Framework használatával, majd a Hozzáadás lehetőséget. Ha a Hozzáadás lehetőség kiválasztása után hibaüzenet jelenik meg, győződjön meg arról, hogy először a projektet építette ki.
Válassza ki a Team (ContosoTeamStats.Models) elemet a Model class (Modellosztály) legördülő listából. Válassza ki a TeamContext (ContosoTeamStats.Models) elemet a Adatkörnyezet osztálya (Adatkörnyezet osztálya) legördülő listából. Írja be
TeamsController
a Vezérlőnév szövegmezőt (ha nem tölti ki automatikusan). Válassza a Hozzáadás lehetőséget a vezérlőosztály létrehozásához és az alapértelmezett nézetek hozzáadásához.A Solution Explorerben (Megoldáskezelőben) bontsa ki a Global.asax elemet, majd kattintson duplán a Global.asax.cs fájlra annak megnyitásához.
Adja hozzá a következő két
using
-utasítást a fájl elejéhez, a többiusing
-utasítás alá:using System.Data.Entity; using ContosoTeamStats.Models;
Szúrja be az alábbi kódsort az
Application_Start
metódus végén:Database.SetInitializer<TeamContext>(new TeamInitializer());
A Solution Explorerben (Megoldáskezelőben) bontsa ki az
App_Start
elemet, majd kattintson duplán aRouteConfig.cs
elemre.A
RegisterRoutes
metódusban cserélje le acontroller = "Home"
értéket aDefault
útvonalban acontroller = "Teams"
értékre, a következő példában látható módon:routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Teams", action = "Index", id = UrlParameter.Optional } );
Az Elrendezés nézet konfigurálása
A Solution Explorerben (Megoldáskezelőben) bontsa ki a Views(Nézetek), majd a Shared (Közös) mappát, és kattintson duplán a _Layout.cshtml fájlra.
Az alábbi példában látható módon módosítsa a
title
elem tartalmát, majd cserélje le aMy ASP.NET Application
szöveget aContoso Team Stats
szövegre:<title>@ViewBag.Title - Contoso Team Stats</title>
body
A szakaszban adja hozzá az alábbi újHtml.ActionLink
utasítást a Contoso csapatstatisztikáihoz az Azure Cache for Redis Test hivatkozása alatt.@Html.ActionLink("Contoso Team Stats", "Index", "Teams", new { area = "" }, new { @class = "navbar-brand" })`
Az alkalmazás fordításához és futtatásához nyomja le a Ctrl+F5 billentyűkombinációt. Az alkalmazás ezen verziója az eredményeket közvetlenül az adatbázisból olvassa ki. Figyelje meg, hogy az Új létrehozása, a Szerkesztés, a Részletekés a Törlés parancsok az MVC 5 Controller with views, using Entity Framework (MVC 5 vezérlő nézetekkel, az Entity Framework használatával) szerkezettel automatikusan bekerültek az alkalmazásba. Az oktatóanyag következő szakaszában hozzáadja az Azure Cache for Redist az adathozzáférés optimalizálásához és az alkalmazás további funkcióinak biztosításához.
Az Azure Cache for Redis alkalmazásának konfigurálása
Az oktatóanyag jelen szakaszában konfigurálja a mintaalkalmazást a Contoso-csapat statisztikáinak tárolására és lekérésére egy Azure Cache for Redis-példányból a StackExchange.Redis cache-ügyfél használatával.
Gyorsítótár-kapcsolat hozzáadása a Teams Controllerhez
A gyors útmutató során már telepítette a StackExchange.Redis ügyféloldali kódtárcsomagját. Emellett már konfigurálta a CacheConnection alkalmazásbeállítást a helyi, illetve a közzétett App Service-szel való használatra. Használja ugyanazon ügyféloldali kódtár és CacheConnection információit a TeamsControllerben.
A Solution Explorerben (Megoldáskezelőben) bontsa ki a Controllers (Vezérlők) mappát, majd kattintson duplán a TeamsController.cs fájlra annak megnyitásához.
Adja hozzá az alábbi két
using
-utasítást a TeamsController.cs fájlhoz:using System.Configuration; using StackExchange.Redis;
Adja hozzá az alábbi két tulajdonságot a
TeamsController
osztályhoz:// Redis Connection string info private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() => { string cacheConnection = ConfigurationManager.AppSettings["CacheConnection"].ToString(); return ConnectionMultiplexer.Connect(cacheConnection); }); public static ConnectionMultiplexer Connection { get { return lazyConnection.Value; } }
A TeamsController frissítése a gyorsítótárból vagy az adatbázisból történő beolvasáshoz
Jelen példában a csapatstatisztikák az adatbázisból vagy a gyorsítótárból is lekérdezhetők. A csapatstatisztikák a gyorsítótárban szerializált List<Team>
, illetve (Redis adattípusok használatával) rendezett készlet formájában vannak tárolva. Rendezett készletből történő lekérdezéskor egyes, az összes vagy bizonyos feltételnek megfelelő elemek lekérésére van lehetőség. Ebben a mintában lekérdezi az első öt csapat rendezési készletét a győzelemek száma alapján rangsorolva.
Az Azure Cache for Redis használatához nem szükséges a csapatstatisztikákat több formátumban tárolni a gyorsítótárban. Ez az oktatóanyag többféle formátumot használ az adatok gyorsítótárazásához használható különböző módszerek és adattípusok példáinak bemutatására.
Adja hozzá az alábbi
using
-utasításokat aTeamsController.cs
fájl elejéhez, a többiusing
-utasítással együtt:using System.Diagnostics; using Newtonsoft.Json;
Az aktuális
public ActionResult Index()
metódusimplementációt cserélje le az alábbi implementációra:// GET: Teams public ActionResult Index(string actionType, string resultType) { List<Team> teams = null; switch(actionType) { case "playGames": // Play a new season of games. PlayGames(); break; case "clearCache": // Clear the results from the cache. ClearCachedTeams(); break; case "rebuildDB": // Rebuild the database with sample data. RebuildDB(); break; } // Measure the time it takes to retrieve the results. Stopwatch sw = Stopwatch.StartNew(); switch(resultType) { case "teamsSortedSet": // Retrieve teams from sorted set. teams = GetFromSortedSet(); break; case "teamsSortedSetTop5": // Retrieve the top 5 teams from the sorted set. teams = GetFromSortedSetTop5(); break; case "teamsList": // Retrieve teams from the cached List<Team>. teams = GetFromList(); break; case "fromDB": // Retrieve results from the database. default: teams = GetFromDB(); break; } sw.Stop(); double ms = sw.ElapsedTicks / (Stopwatch.Frequency / (1000.0)); // Add the elapsed time of the operation to the ViewBag.msg. ViewBag.msg += " MS: " + ms.ToString(); return View(teams); }
Vegye fel az alábbi három módszert a
TeamsController
osztályba azonplayGames
,clearCache
, ésrebuildDB
művelettípusok megvalósításához, amelyek az előző kódrészletben hozzáadott „switch” utasításból származnak.Egy játékszezon szimulálásával a
PlayGames
módszer frissíti a csapatstatisztikákat, az eredményeket elmenti az adatbázisba, majd törli a gyorsítótárból a már elavult adatokat.void PlayGames() { ViewBag.msg += "Updating team statistics. "; // Play a "season" of games. var teams = from t in db.Teams select t; Team.PlayGames(teams); db.SaveChanges(); // Clear any cached results ClearCachedTeams(); }
A
RebuildDB
módszer újrainicializálja az adatbázist az alapértelmezett csapatokkal, statisztikákat állít elő számukra, és törli a gyorsítótárból a már elavult adatokat.void RebuildDB() { ViewBag.msg += "Rebuilding DB. "; // Delete and re-initialize the database with sample data. db.Database.Delete(); db.Database.Initialize(true); // Clear any cached results ClearCachedTeams(); }
A
ClearCachedTeams
módszer eltávolítja a gyorsítótárazott csapatstatisztikákat a gyorsítótárból.void ClearCachedTeams() { IDatabase cache = Connection.GetDatabase(); cache.KeyDelete("teamsList"); cache.KeyDelete("teamsSortedSet"); ViewBag.msg += "Team data removed from cache. "; }
Vegye fel az alábbi négy módszert a
TeamsController
osztályba a csapatstatisztikák gyorsítótárból és adatbázisból különböző módszerekkel történő lekérdezéséhez. Mindegyik metódus egyList<Team>
választ ad vissza, amely ezután megjelenik a nézetben.A
GetFromDB
módszer beolvassa a csapatstatisztikákat a gyorsítótárból.List<Team> GetFromDB() { ViewBag.msg += "Results read from DB. "; var results = from t in db.Teams orderby t.Wins descending select t; return results.ToList<Team>(); }
A
GetFromList
módszer szerializáltList<Team>
formájában olvassa be a csapatstatisztikákat a gyorsítótárból. Ha a statisztikák nem szerepelnek a gyorsítótárban, a gyorsítótár nem jelenik meg. Gyorsítótár-tévesztés esetén a rendszer az adatbázisból olvassa be a statisztikákat, és a gyorsítótárba menti őket a következő kérés számára. Ebben a mintában JSON.NET-szerializálást használunk a .NET-objektumok gyorsítótárba és gyorsítótárból történő szerializálására. További információ: .NET-objektumok használata az Azure Cache for Redisben.List<Team> GetFromList() { List<Team> teams = null; IDatabase cache = Connection.GetDatabase(); string serializedTeams = cache.StringGet("teamsList"); if (!String.IsNullOrEmpty(serializedTeams)) { teams = JsonConvert.DeserializeObject<List<Team>>(serializedTeams); ViewBag.msg += "List read from cache. "; } else { ViewBag.msg += "Teams list cache miss. "; // Get from database and store in cache teams = GetFromDB(); ViewBag.msg += "Storing results to cache. "; cache.StringSet("teamsList", JsonConvert.SerializeObject(teams)); } return teams; }
A
GetFromSortedSet
módszer beolvassa a csapatstatisztikákat egy gyorsítótárazott rendezett készletből. Ha hiányzik a gyorsítótár, a csapat statisztikái beolvashatók az adatbázisból, és rendezett készletként vannak tárolva a gyorsítótárban.List<Team> GetFromSortedSet() { List<Team> teams = null; IDatabase cache = Connection.GetDatabase(); // If the key teamsSortedSet is not present, this method returns a 0 length collection. var teamsSortedSet = cache.SortedSetRangeByRankWithScores("teamsSortedSet", order: Order.Descending); if (teamsSortedSet.Count() > 0) { ViewBag.msg += "Reading sorted set from cache. "; teams = new List<Team>(); foreach (var t in teamsSortedSet) { Team tt = JsonConvert.DeserializeObject<Team>(t.Element); teams.Add(tt); } } else { ViewBag.msg += "Teams sorted set cache miss. "; // Read from DB teams = GetFromDB(); ViewBag.msg += "Storing results to cache. "; foreach (var t in teams) { Console.WriteLine("Adding to sorted set: {0} - {1}", t.Name, t.Wins); cache.SortedSetAdd("teamsSortedSet", JsonConvert.SerializeObject(t), t.Wins); } } return teams; }
A
GetFromSortedSetTop5
metódus beolvassa az öt legjobb csapatot a gyorsítótárazott rendezett készletből. Első lépésben ateamsSortedSet
kulcsot keresi meg a gyorsítótárban. Ha ez a kulcs nincs jelen, a metódus aGetFromSortedSet
csapat statisztikáinak olvasására és a gyorsítótárban való tárolására lesz meghívva. Ezt a gyorsítótárazott rendezett készlet lekérdezése követi, amely az öt legjobb csapatot adja vissza.List<Team> GetFromSortedSetTop5() { List<Team> teams = null; IDatabase cache = Connection.GetDatabase(); // If the key teamsSortedSet is not present, this method returns a 0 length collection. var teamsSortedSet = cache.SortedSetRangeByRankWithScores("teamsSortedSet", stop: 4, order: Order.Descending); if(teamsSortedSet.Count() == 0) { // Load the entire sorted set into the cache. GetFromSortedSet(); // Retrieve the top 5 teams. teamsSortedSet = cache.SortedSetRangeByRankWithScores("teamsSortedSet", stop: 4, order: Order.Descending); } ViewBag.msg += "Retrieving top 5 teams from cache. "; // Get the top 5 teams from the sorted set teams = new List<Team>(); foreach (var team in teamsSortedSet) { teams.Add(JsonConvert.DeserializeObject<Team>(team.Element)); } return teams; }
A Létrehozás, Szerkesztés és Törlés módszerek frissítése a gyorsítótárral való együttműködéshez
A szerkezeti kódot a rendszer ezen minta részeként állítja elő a csapatok hozzáadásához, szerkesztéséhez és törléséhez. Egy csapat hozzáadását, szerkesztését vagy eltávolítását követően a gyorsítótárban található adatok elavulttá válnak. Ebben a szakaszban ezt a három metódust fogja módosítani a gyorsítótárazott csapatok törlése érdekében, hogy a gyorsítótár frissüljön.
Keresse meg a
Create(Team team)
módszert aTeamsController
osztályban. Adja hozzá aClearCachedTeams
metódus hívását, ahogy az az alábbi példában is látható:// POST: Teams/Create // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see https://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "ID,Name,Wins,Losses,Ties")] Team team) { if (ModelState.IsValid) { db.Teams.Add(team); db.SaveChanges(); // When a team is added, the cache is out of date. // Clear the cached teams. ClearCachedTeams(); return RedirectToAction("Index"); } return View(team); }
Keresse meg a
Edit(Team team)
módszert aTeamsController
osztályban. Adja hozzá aClearCachedTeams
metódus hívását, ahogy az az alábbi példában is látható:// POST: Teams/Edit/5 // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see https://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit([Bind(Include = "ID,Name,Wins,Losses,Ties")] Team team) { if (ModelState.IsValid) { db.Entry(team).State = EntityState.Modified; db.SaveChanges(); // When a team is edited, the cache is out of date. // Clear the cached teams. ClearCachedTeams(); return RedirectToAction("Index"); } return View(team); }
Keresse meg a
DeleteConfirmed(int id)
módszert aTeamsController
osztályban. Adja hozzá aClearCachedTeams
metódus hívását, ahogy az az alábbi példában is látható:// POST: Teams/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(int id) { Team team = db.Teams.Find(id); db.Teams.Remove(team); db.SaveChanges(); // When a team is deleted, the cache is out of date. // Clear the cached teams. ClearCachedTeams(); return RedirectToAction("Index"); }
Gyorsítótárazási metódusok hozzáadása a Teams Index nézethez
A Solution Explorer (Megoldáskezelőben) bontsa ki a Views (Nézetek), majd a Teams (Csapatok) mappát, és kattintson duplán az Index.cshtml fájlra.
A fájl elején keresse meg az alábbi bekezdéselemet:
Ez a hivatkozás egy új csapatot hoz létre. Cserélje le a bekezdéselemet az alábbi táblával. Ez a tábla műveleti hivatkozásokkal rendelkezik egy új csapat létrehozása, egy új játékszezon lejátszása, a gyorsítótár kiürítése, a csapatok gyorsítótárból, több formátumban történő lekérdezése, a csapatok adatbázisból történő lekérdezése, valamint az adatbázis friss mintaadatokkal való újraépítése céljából.
<table class="table"> <tr> <td> @Html.ActionLink("Create New", "Create") </td> <td> @Html.ActionLink("Play Season", "Index", new { actionType = "playGames" }) </td> <td> @Html.ActionLink("Clear Cache", "Index", new { actionType = "clearCache" }) </td> <td> @Html.ActionLink("List from Cache", "Index", new { resultType = "teamsList" }) </td> <td> @Html.ActionLink("Sorted Set from Cache", "Index", new { resultType = "teamsSortedSet" }) </td> <td> @Html.ActionLink("Top 5 Teams from Cache", "Index", new { resultType = "teamsSortedSetTop5" }) </td> <td> @Html.ActionLink("Load from DB", "Index", new { resultType = "fromDB" }) </td> <td> @Html.ActionLink("Rebuild DB", "Index", new { actionType = "rebuildDB" }) </td> </tr> </table>
Görgessen az Index.cshtml fájl aljára, és adja hozzá a következő
tr
elemet, hogy az a fájl utolsó táblázatának utolsó sora legyen:<tr><td colspan="5">@ViewBag.Msg</td></tr>
Ez a sor az aktuális művelet állapotjelentését
ViewBag.Msg
tartalmazó értékeket jeleníti meg. AViewBag.Msg
beállítás akkor van beállítva, ha az előző lépésben bármelyik művelethivatkozást kiválasztja.A projekt létrehozásához nyomja le az F6 billentyűt.
Az alkalmazás futtatása helyben
Futtassa az alkalmazást a helyi számítógépen a csapatok támogatása érdekében hozzáadott funkció ellenőrzéséhez.
Ebben a tesztben az alkalmazás és az adatbázis is helyben fut. Az Azure Cache for Redis nem helyi. Távolról üzemelteti az Azure-ban. Ezért a gyorsítótár valószínűleg kissé alul fogja végezni az adatbázist. A legjobb teljesítmény érdekében az ügyfélalkalmazásnak és az Azure Cache for Redis-példánynak ugyanazon a helyen kell lennie.
A következő szakaszban minden erőforrást üzembe helyez az Azure-ban, hogy láthassa a gyorsítótár használatának jobb teljesítményét.
Az alkalmazás helyi futtatása:
Az alkalmazás futtatásához nyomja le a Ctrl+F5 billentyűkombinációt.
Tesztelje a nézethez hozzáadott összes új metódust. Mivel a gyorsítótár ezen tesztek során távolról fut, az adatbázisnak a gyorsítótárnál némileg nagyobb teljesítménnyel kell rendelkeznie.
Közzététel és futtatás az Azure-ban
Adatbázis kiépítése az alkalmazáshoz
Ebben a szakaszban egy új adatbázist fog kiépíteni az SQL Database-ben az azure-ban üzemeltetett alkalmazás számára.
Az Azure Portalon válassza az Erőforrás létrehozása lehetőséget az Azure Portal bal felső sarkában.
Az Új lapon válassza az Adatbázisok>SQL Database lehetőséget.
Használja a következő beállításokat az új SQL Database-adatbázishoz:
Beállítás Ajánlott érték Leírás Adatbázis neve ContosoTeamsDatabase Az érvényes adatbázisnevekkel kapcsolatban lásd az adatbázis-azonosítókat ismertető cikket. Előfizetés Az Ön előfizetése Válassza ki ugyanazt az előfizetést, amelyet a gyorsítótár létrehozásához és az App Service futtatásához használt. Erőforráscsoport TestResourceGroup Válassza a Meglévő használata lehetőséget, és használja ugyanazt az erőforráscsoportot, amelyben elhelyezte a gyorsítótárat és az App Service-t. Forrás kiválasztása Üres adatbázis Kezdje egy üres adatbázissal. A Kiszolgáló területen válassza a Szükséges beállítások>konfigurálása új kiszolgáló létrehozása lehetőséget, adja meg a következő adatokat, majd használja a Kiválasztás gombot:
Beállítás Ajánlott érték Leírás Kiszolgáló neve Bármely globálisan egyedi név Az érvényes kiszolgálónevekkel kapcsolatban lásd az elnevezési szabályokat és korlátozásokat ismertető cikket. Kiszolgáló rendszergazdájának felhasználóneve Bármely érvényes név Az érvényes bejelentkezési nevekkel kapcsolatban lásd az adatbázis-azonosítókat ismertető cikket. Jelszó Bármely érvényes jelszó A jelszónak legalább 8 karakter hosszúságúnak kell lennie, és tartalmaznia kell karaktereket a következő kategóriák közül legalább háromból: nagybetűs karakterek, kisbetűs karakterek, számjegyek és nem alfanumerikus karakterek. Tartózkodási hely USA keleti régiója Válassza ki ugyanazt a régiót, amelyben a gyorsítótárat és az App Service-t létrehozta. Válassza a Rögzítés az irányítópulton lehetőséget, majd a Létrehozás lehetőséget az új adatbázis és kiszolgáló létrehozásához.
Az új adatbázis létrehozása után válassza az Adatbázis-kapcsolati sztring megjelenítése lehetőséget, és másolja a ADO.NET kapcsolati sztring.
Az Azure Portalon lépjen az App Service-be, és válassza az Alkalmazás Gépház lehetőséget, majd adja hozzá az új kapcsolati sztring a Csatlakozás ion sztringek szakaszában.
Adjon hozzá egy TeamContext nevű kapcsolati sztringet, amely megegyezik az Entity Framework-adatbáziskörnyezet osztályának nevével. Illessze be az új adatbázis kapcsolati sztringjét az értékként. Cserélje le a következő helyőrzőket a kapcsolati sztring, és válassza a Mentés lehetőséget:
Helyőrző Ajánlott érték {saját_felhasználónév} Használja az imént létrehozott kiszolgáló rendszergazdai bejelentkezési adatait . {saját_jelszó} Használja az imént létrehozott kiszolgáló jelszavát. Ha a felhasználónevet és a jelszót alkalmazásbeállításként adja hozzá, a felhasználónév és a jelszó nem szerepel a kódban. Ez a módszer segíti a hitelesítő adatok védelmét.
Alkalmazásfrissítések közzététele az Azure-ban
Az oktatóanyag ezen lépésében közzéteszi az alkalmazás frissítéseit az Azure-ban, majd futtatja az alkalmazást a felhőben.
Kattintson a jobb gombbal a ContosoTeamStats projektre a Visual Studióban, és válassza a Közzététel lehetőséget.
Válassza a Közzététel lehetőséget, ha ugyanazt a közzétételi profilt szeretné használni, amelyet a rövid útmutatóban létrehozott.
Ha a közzététel befejeződött, a Visual Studio elindítja az alkalmazást az alapértelmezett webböngészőben.
A mintaalkalmazás egyes műveleti hivatkozásait a következő táblázat ismerteti:
Action Leírás Új létrehozása Létrehoz egy új csapatot. Szezon végigjátszása Végigjátszik egy szezont, frissíti a csapatstatisztikákat, és törli a gyorsítótárból az elavult adatokat. Clear Cache Törli a csapatstatisztikákat a gyorsítótárból. Lista a gyorsítótárból Lekérdezi a csapatstatisztikákat a gyorsítótárból. Ha a gyorsítótár hiányzik, töltse be a statisztikákat az adatbázisból, és mentse a gyorsítótárba a következő alkalommal. Rendezett készlet a gyorsítótárból Lekérdezi a csapatstatisztikákat a gyorsítótárból egy rendezett készlet használatával. Ha a gyorsítótár hiányzik, töltse be a statisztikákat az adatbázisból, és mentse a gyorsítótárba egy rendezett készlettel. Az 5 legjobb csapat a gyorsítótárból Lekérdezi az 5 legjobb csapatot a gyorsítótárból egy rendezett készlet használatával. Ha a gyorsítótár hiányzik, töltse be a statisztikákat az adatbázisból, és mentse a gyorsítótárba egy rendezett készlettel. Betöltés adatbázisból Lekérdezi a csapatstatisztikákat az adatbázisból. Adatbázis újraépítése Újraépíti az adatbázist, és ismét feltölti azt minta-csapatadatokkal. Szerkesztés / Részletek / Törlés Szerkeszthet egy csapatot, megtekintheti annak részletes adatait, törölhet egy csapatot.
Válasszon ki néhány műveletet, és kísérletezzen az adatok lekérésével a különböző forrásokból. Figyelje meg az adatbázisból és a gyorsítótárból történő adatlekérdezés különböző módjainak végrehajtásához szükséges időbeli eltéréseket.
Clean up resources
Ha végzett a minta oktatóanyag-alkalmazással, törölheti az Azure-erőforrásokat a költségek és erőforrások megőrzése érdekében. Az összes erőforrásnak ugyanabban az erőforráscsoportban kell lennie. Az erőforráscsoport törlésével egy művelettel együtt törölheti őket. A cikkben szereplő utasítások egy TestResources nevű erőforráscsoportot használtak.
Fontos
Az erőforráscsoport törlése nem visszaállítható; az erőforráscsoport és a benne foglalt erőforrások véglegesen törlődnek. Figyeljen arra, hogy ne töröljön véletlenül erőforráscsoportot vagy erőforrásokat. Ha a minta üzemeltetéséhez létrehozott erőforrásokat egy meglévő erőforráscsoportban hozta létre, amely a megtartani kívánt erőforrásokat tartalmazza, a bal oldalon egyenként törölheti az egyes erőforrásokat.
Jelentkezzen be az Azure Portalra, és válassza az Erőforráscsoportok elemet.
Írja be az erőforráscsoport nevét az Elemek szűrése... szövegmezőbe.
Válassza az erőforráscsoporttól jobbra található ... lehetőséget, és válassza az Erőforráscsoport törlése lehetőséget.
A rendszer az erőforráscsoport törlésének megerősítését kéri. Írja be a megerősítéshez az erőforráscsoport nevét, és válassza a Törlés lehetőséget.
A rendszer néhány pillanaton belül törli az erőforráscsoportot és a benne foglalt erőforrásokat.