Kurz: Vytvoření tabulky výsledků s principem s doplňováním mezipaměti aplikací v ASP.NET
V tomto kurzu aktualizujete webovou aplikaci ContosoTeamStats ASP.NET--- vytvořenou v rychlém startu ASP.NET pro Azure Cache for Redis--- zahrnout tabulku výsledků, která používá vzor doplňování mezipaměti s Azure Cache for Redis. Ukázková aplikace zobrazí seznam týmových statistik z databáze. Ukazuje také různé způsoby použití služby Azure Cache for Redis k ukládání a načítání dat z mezipaměti za účelem zlepšení výkonu. Po dokončení kurzu máte spuštěnou webovou aplikaci, která čte a zapisuje do databáze, je optimalizovaná pro Azure Cache for Redis a hostovaná v Azure.
V tomto kurzu se naučíte:
- Zvýšení propustnosti dat a snížení zatížení databáze ukládáním a načítáním dat pomocí Služby Azure Cache for Redis
- Použít seřazenou sadu Redis k načtení pěti nejlepších týmů
- Zřídit prostředky Azure pro aplikaci pomocí šablony Resource Manageru
- Publikovat aplikaci do Azure pomocí sady Visual Studio
Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.
Předpoklady
Pro absolvování tohoto kurzu musí být splněné následující požadavky:
- Tento kurz pokračuje tam, kde jste skončili v rychlém startu ASP.NET pro Azure Cache for Redis. Pokud jste to ještě neudělali, absolvujte nejprve tento rychlý start.
- Nainstalujte Visual Studio 2019 s následujícími úlohami:
- Vývoj pro ASP.NET a web
- Vývoj pro Azure
- Vývoj pro desktopové aplikace .NET pomocí SQL Server Express LocalDB nebo edice SQL Server 2017 Express
Přidání tabulky výsledků do projektu
V této části kurzu nakonfigurujete projekt ContosoTeamStats s tabulkou výsledků, která oznamuje statistiku výher, proher a remíz u seznamu fiktivních týmů.
Přidání sady technologií Entity Framework do projektu
V sadě Visual Studio otevřete řešení ContosoTeamStats , které jste vytvořili v rychlém startu ASP.NET pro Azure Cache for Redis.
Vyberte Nástroje > NuGet Správce balíčků > konzolu Správce balíčků.
Z okna konzoly Správce balíčků spusťte následující příkaz a nainstalujte sadu technologií Entity Framework:
Install-Package EntityFramework
Další informace o tomto balíčku najdete na stránce NuGet pro EntityFramework.
Přidání modelu Team
V Průzkumníku řešení klikněte pravým tlačítkem na Modely a vyberte Přidat, Třídu.
Zadejte
Team
název třídy a vyberte Přidat.Nahraďte příkazy
using
v horní části souboru Team.cs následujícími příkazyusing
:using System; using System.Collections.Generic; using System.Data.Entity; using System.Data.Entity.SqlServer;
Nahraďte definici
Team
třídy následujícím fragmentem kódu, který obsahuje aktualizovanouTeam
definici třídy a některé další pomocné třídy Entity Frameworku. Tento kurz používá přístup Code First se sadou technologií Entity Framework. Díky tomu může sada technologií Entity Framework vytvořit databázi z vašeho kódu. Další informace o přístupu Code First k Entity Frameworku, který používáme v tomto kurzu, najdete v tématu Code First pro novou databázi.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()); } }
V Průzkumníku řešení dvakrát klikněte na soubor Web.config a otevřete ho.
Přidejte následující sekci
connectionStrings
do sekceconfiguration
. Název připojovacího řetězce se musí shodovat s názvem třídy kontextu databáze v sadě Entity Framework, což jeTeamContext
.Tato připojovací řetězec předpokládá, že jste splnili požadavky a nainstalovali jste sql Server Express LocalDB, který je součástí úlohy vývoje desktopových aplikací .NET nainstalované se sadou Visual Studio 2019.
<connectionStrings> <add name="TeamContext" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Teams.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings>
Následující příklad ukazuje novou sekci
connectionStrings
následujícíconfigSections
v sekciconfiguration
:<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> ...
Přidání kontroleru TeamsController a zobrazení
V sadě Visual Studio sestavte projekt.
V Průzkumníku řešení klikněte pravým tlačítkem na složku Kontrolery a vyberte Přidat, Kontroler.
Zvolte kontroler MVC 5 se zobrazeními, pomocí Entity Frameworku a vyberte Přidat. Pokud se po výběru možnosti Přidat zobrazí chyba, ujistěte se, že jste nejprve vytvořili projekt.
Vyberte Team (ContosoTeamStats.Models) z rozevíracího seznamu Třída modelu. Vyberte TeamContext (ContosoTeamStats.Models) z rozevíracího seznamu Třída kontextu dat. Zadejte
TeamsController
textové pole Název kontroleru (pokud není automaticky vyplněné). Výběrem možnosti Přidat vytvoříte třídu kontroleru a přidáte výchozí zobrazení.V Průzkumníku řešení rozbalte Global.asax a dvojím kliknutím otevřete soubor Global.asax.cs.
Přidejte následující dva příkazy
using
do horní části souboru pod ostatní příkazyusing
:using System.Data.Entity; using ContosoTeamStats.Models;
Přidejte následující řádek kódu na konec metody
Application_Start
:Database.SetInitializer<TeamContext>(new TeamInitializer());
V Průzkumníku řešení rozbalte
App_Start
a dvakrát klikněte na souborRouteConfig.cs
.V metodě
RegisterRoutes
nahraďtecontroller = "Home"
v cestěDefault
řetězcemcontroller = "Teams"
, jak je znázorněno v následujícím příkladu:routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Teams", action = "Index", id = UrlParameter.Optional } );
Konfigurace zobrazení Rozložení
V Průzkumníku řešení rozbalte složku Zobrazení, poté složku Sdílené, a dvakrát klikněte na soubor _Layout.cshtml.
Změňte obsah elementu
title
a nahraďteMy ASP.NET Application
zaContoso Team Stats
, jak je znázorněno v následujícím příkladu:<title>@ViewBag.Title - Contoso Team Stats</title>
body
V části přidejte následující novýHtml.ActionLink
příkaz pro statistiky týmu Contoso těsně pod odkaz pro Azure Cache for Redis Test.@Html.ActionLink("Contoso Team Stats", "Index", "Teams", new { area = "" }, new { @class = "navbar-brand" })`
Stisknutím kombinace kláves Ctrl+F5 sestavíte a spustíte aplikaci. Tato verze aplikace načítá výsledky přímo z databáze. Všimněte si akcí Vytvořit nový, Upravit, Podrobnosti a Odstranit, které do aplikace automaticky přidalo vygenerované uživatelské rozhraní Kontroler MVC 5 se zobrazeními, s použitím Entity Frameworku. V další části kurzu přidáte Azure Cache for Redis, abyste optimalizovali přístup k datům a poskytli aplikaci další funkce.
Konfigurace aplikace pro Azure Cache for Redis
V této části kurzu nakonfigurujete ukázkovou aplikaci tak, aby ukládala a načítala týmové statistiky společnosti Contoso z instance Azure Cache for Redis pomocí klienta mezipaměti StackExchange.Redis .
Přidání připojení mezipaměti ke kontroleru Teams
V rychlém startu jste už nainstalovali balíček klientské knihovny StackExchange.Redis. Také jste nakonfigurovali aplikaci CacheConnection, aby se používala místně a pomocí publikované služby App Service. Použijte stejnou klientskou knihovnu a informace CacheConnection uvedené v kontroleru TeamsController.
V Průzkumníku řešení rozbalte složku Kontrolery a dvojím kliknutím otevřete soubor TeamsController.cs.
Přidejte následující dva příkazy
using
do souboru TeamsController.cs:using System.Configuration; using StackExchange.Redis;
Přidejte následující dvě vlastnosti do třídy
TeamsController
:// 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; } }
Aktualizace kontroleru TeamsController na čtení z mezipaměti nebo databáze
V této ukázce lze týmové statistiky získat z databáze nebo z mezipaměti. Týmové statistiky jsou v mezipaměti uložené pomocí datových typů Redis jako serializovaný seznam List<Team>
, a také jako seřazená sada. Při načítání položek ze seřazené sady můžete načíst část položek, všechny položky nebo provézt dotaz na určité položky. V této ukázce se dotazujete na seřazenou sadu pro prvních pět týmů seřazených podle počtu výher.
Aby bylo možné používat Azure Cache for Redis, není nutné ukládat týmové statistiky ve více formátech v mezipaměti. V tomto kurzu používáme více formátů, abychom předvedli různé způsoby a datové typy, které můžete použít pro ukládání dat do mezipaměti.
Přidejte následující příkazy
using
do horní části souboruTeamsController.cs
k ostatním příkazůmusing
:using System.Diagnostics; using Newtonsoft.Json;
Nahraďte stávající implementaci metody
public ActionResult Index()
za následující implementaci:// 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); }
Přidejte následující tři metody do třídy
TeamsController
pro implementaci typů akcíplayGames
,clearCache
arebuildDB
z výrazu switch, který jste přidali v předchozím fragmentu kódu.Metoda
PlayGames
aktualizuje týmové statistiky tak, že simuluje sezónu her, výsledky uloží do databáze, a vymaže již zastaralá data z mezipaměti.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(); }
Metoda
RebuildDB
znovu inicializuje databázi s výchozí sadou týmů, vygeneruje pro ně statistiky, a vymaže již zastaralá data z mezipaměti.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(); }
Metoda
ClearCachedTeams
odebere z mezipaměti všechny uložené týmové statistiky.void ClearCachedTeams() { IDatabase cache = Connection.GetDatabase(); cache.KeyDelete("teamsList"); cache.KeyDelete("teamsSortedSet"); ViewBag.msg += "Team data removed from cache. "; }
Přidejte následující čtyři metody do třídy
TeamsController
pro implementaci různých způsobů načítání týmových statistik z mezipaměti a z databáze. Každá z těchto metod vrátí seznamList<Team>
, který se následně zobrazí v zobrazení.Metoda
GetFromDB
načítá týmové statistiky z databáze.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>(); }
Metoda
GetFromList
načítá týmové statistiky z mezipaměti jako serializovaný seznamList<Team>
. Pokud statistiky nejsou v mezipaměti, dojde k chybě mezipaměti. V takovém případě se týmové statistiky načtou z databáze a uloží se do mezipaměti pro použití v další žádosti. V této ukázce je pro serializaci objektů .NET do a z mezipaměti použita serializace JSON.NET. Další informace naleznete v tématu Práce s objekty .NET v Azure Cache for Redis.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; }
Metoda
GetFromSortedSet
načítá týmové statistiky ze seřazené sady v mezipaměti. Pokud dojde k chybě mezipaměti, týmové statistiky se načtou z databáze a uloží se do mezipaměti jako seřazená sada.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; }
Metoda
GetFromSortedSetTop5
načte seznam pěti nejlepších týmů ze seřazené sady uložené v mezipaměti. Začne tím, že zjistí přítomnost klíčeteamsSortedSet
v mezipaměti. Pokud tento klíč není k dispozici,GetFromSortedSet
volá se metoda pro čtení týmových statistik a jejich uložení do mezipaměti. Poté se provede dotaz na seřazenou sadu, aby se vrátil seznam pěti nejlepších týmů.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; }
Aktualizace metod Create, Edit a Delete pro práci s mezipamětí
Kód generování uživatelského rozhraní vygenerovaný jako součást této ukázky obsahuje metody pro přidávání, upravování a odstraňování týmů. Pokaždé když dojde k přidání, úpravě nebo odstranění týmu se data v mezipaměti stanou zastaralými. V této části upravíte tyto tři metody pro vymazání týmů z mezipaměti, aby bylo možné mezipaměť aktualizovat.
Přejděte k metodě
Create(Team team)
ve tříděTeamsController
. Přidejte volání metodyClearCachedTeams
, jak je znázorněno v následujícím příkladu:// 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); }
Přejděte k metodě
Edit(Team team)
ve tříděTeamsController
. Přidejte volání metodyClearCachedTeams
, jak je znázorněno v následujícím příkladu:// 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); }
Přejděte k metodě
DeleteConfirmed(int id)
ve tříděTeamsController
. Přidejte volání metodyClearCachedTeams
, jak je znázorněno v následujícím příkladu:// 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"); }
Přidání metod ukládání do mezipaměti do zobrazení indexu Teams
V Průzkumníku řešení rozbalte složku Zobrazení, poté složku Týmy, a dvakrát klikněte na soubor Index.cshtml.
V horní části souboru vyhledejte následující element odstavce:
Tento odkaz vytvoří nový tým. Nahraďte element odstavce za následující tabulku. Tato tabulka obsahuje odkazy pro vytvoření nového týmu, hraní nové sezóny her, vymazání mezipaměti, načtení týmů z mezipaměti v různých formátech, načtení týmů z databáze a nové sestavení databáze s novými vzorovými daty.
<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>
Posuňte se do dolní části souboru Index.cshtml a přidejte následující
tr
prvek, aby byl posledním řádkem v poslední tabulce v souboru:<tr><td colspan="5">@ViewBag.Msg</td></tr>
Tento řádek zobrazuje hodnotu
ViewBag.Msg
, která obsahuje zprávu o stavu o aktuální operaci. NastavíViewBag.Msg
se, když vyberete některý z odkazů na akce z předchozího kroku.Projekt sestavíte stisknutím klávesy F6.
Místní spuštění aplikace
Spusťte aplikaci místně na počítači a ověřte funkci přidanou pro podporu týmů.
V tomto testu jsou aplikace i databáze spuštěny místně. Azure Cache for Redis není místní. Hostuje se vzdáleně v Azure. To je důvod, proč mezipaměť bude pravděpodobně méně provádět databázi mírně. Pro zajištění nejlepšího výkonu by klientská aplikace a instance Azure Cache for Redis měly být ve stejném umístění.
V další části nasadíte všechny prostředky do Azure, abyste viděli vylepšený výkon při použití mezipaměti.
Spuštění aplikace místně:
Aplikaci spustíte stisknutím kombinace kláves Ctrl+F5.
Otestuje všechny nové metody, které jste přidali do zobrazení. Vzhledem k tomu, že mezipaměť je v těchto testech vzdálená, bude databáze o něco málo výkonnější než mezipaměť.
Publikování a spuštění v Azure
Zřízení databáze pro aplikaci
V této části zřídíte novou databázi ve službě SQL Database pro aplikaci, která se bude používat při hostování v Azure.
Na webu Azure Portal vyberte Vytvořit prostředek v levém horním rohu webu Azure Portal.
Na stránce Nový vyberte Databáze>SQL Database.
Pro novou databázi SQL použijte následující nastavení:
Nastavení Navrhovaná hodnota Popis Název databáze ContosoTeamsDatabase Platné názvy databází najdete v tématu Identifikátory databází. Předplatné Vaše předplatné Vyberte stejné předplatné, které jste použili k vytvoření mezipaměti a hostování služby App Service. Skupina prostředků TestResourceGroup Vyberte Použít existující a použijte stejnou skupinu prostředků, do které jste umístili mezipaměť a službu App Service. Vybrat zdroj Prázdná databáze Začněte s prázdnou databází. V části Server vyberte Konfigurovat požadovaná nastavení>Vytvořit nový server a zadejte následující informace a pak použijte tlačítko Vybrat:
Nastavení Navrhovaná hodnota Popis Název serveru Libovolný globálně jedinečný název Platné názvy serverů najdete v tématu Pravidla a omezení pojmenování. Přihlašovací jméno správce serveru Libovolné platné jméno Platná přihlašovací jména najdete v tématu Identifikátory databází. Heslo Libovolné platné heslo Heslo musí mít alespoň 8 znaků a musí obsahovat znaky ze tří z následujících kategorií: velká písmena, malá písmena, číslice a jiné než alfanumerické znaky. Místo USA – východ Vyberte stejnou oblast, ve které jste vytvořili mezipaměť a App Service. Vyberte Připnout na řídicí panel a pak vytvořte novou databázi a server.
Po vytvoření nové databáze vyberte Zobrazit připojovací řetězec databáze a zkopírujte ADO.NET připojovací řetězec.
Na webu Azure Portal přejděte do služby App Service a vyberte Nastavení aplikace a pak v části Připojení řetězců přidejte nové připojovací řetězec.
Přidejte nový připojovací řetězec s názvem TeamContext, aby odpovídal třídě kontextu databáze sady technologií Entity Framework. Vložte připojovací řetězec nové databáze jako hodnotu. Nezapomeňte nahradit následující zástupné symboly v připojovací řetězec a vybrat Uložit:
Zástupný symbol Navrhovaná hodnota {vaše_uživatelské jméno} Použijte přihlašovací jméno správce serveru pro server, který jste právě vytvořili. {vaše_heslo} Použijte heslo pro server, který jste právě vytvořili. Přidáním uživatelského jména a hesla jako nastavení aplikace se vaše uživatelské jméno a heslo do kódu nezahrnou. Tento přístup vám pomůže přihlašovací údaje ochránit.
Publikování aktualizací aplikace do Azure
V tomto kroku kurzu publikujete aktualizace aplikace do Azure a spustíte ji v cloudu.
V sadě Visual Studio vyberte projekt ContosoTeamStats pravým tlačítkem a zvolte Publikovat.
Vyberte Možnost Publikovat a použijte stejný profil publikování, který jste vytvořili v rychlém startu.
Po dokončení publikování Visual Studio spustí aplikaci ve výchozím webovém prohlížeči.
Následující tabulka popisuje každý odkaz na akci v ukázkové aplikaci:
Akce Popis Vytvořit nové Vytvoření nového týmu. Odehrát sezónu Odehrání sezóny her, aktualizace týmových statistik a vymazání zastaralých dat z mezipaměti. Clear Cache Vymazání týmových statistik z mezipaměti. Seznam z mezipaměti Načtení týmových statistik z mezipaměti. Pokud dojde k chybě mezipaměti, načtěte statistiky z databáze a uložte je do mezipaměti pro příště. Seřazená sada z mezipaměti Načtení týmových statistik z mezipaměti pomocí seřazené sady. Pokud dojde k chybě mezipaměti, načtěte statistiky z databáze a uložte je do mezipaměti pomocí seřazené sady. Top 5 týmů z mezipaměti Načtení Top 5 týmů z mezipaměti pomocí seřazené sady. Pokud dojde k chybě mezipaměti, načtěte statistiky z databáze a uložte je do mezipaměti pomocí seřazené sady. Načíst z databáze Načtení týmových statistik z databáze. Znovu sestavit databázi Opětovné vytvoření databáze se vzorovými týmovými daty. Upravit / Podrobnosti / Odstranit Upravení týmu, zobrazení podrobností o týmu, odstranění týmu.
Vyberte některé z akcí a experimentujte s načtením dat z různých zdrojů. Všimněte si rozdílů v době trvání různých způsobů načítání dat z databáze a mezipaměti.
Vyčištění prostředků
Po dokončení ukázkové aplikace kurzu můžete odstranit prostředky Azure, abyste ušetřili náklady a prostředky. Všechny prostředky by měly být obsaženy ve stejné skupině prostředků. Můžete je odstranit společně v jedné operaci odstraněním skupiny prostředků. Pokyny v tomto článku použily skupinu prostředků s názvem TestResources.
Důležité
Odstranění skupiny prostředků je nevratné a skupina prostředků včetně všech v ní obsažených prostředků bude trvale odstraněna. Ujistěte se, že nechtěně neodstraníte nesprávnou skupinu prostředků nebo prostředky. Pokud jste vytvořili prostředky pro hostování této ukázky v existující skupině prostředků, která obsahuje prostředky, které chcete zachovat, můžete každý prostředek odstranit jednotlivě na levé straně.
Přihlaste se k webu Azure Portal a potom vyberte Skupiny prostředků.
Zadejte název vaší skupiny prostředků do textového pole Filtrování položek....
Vyberte ... napravo od vaší skupiny prostředků a vyberte Odstranit skupinu prostředků.
Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Potvrďte zadáním názvu skupiny prostředků a vyberte Odstranit.
Po chvíli bude skupina prostředků včetně všech obsažených prostředků odstraněná.