Ekinlikler
31 Mar 23 - 2 Nis 23
En büyük SQL, Fabric ve Power BI öğrenme etkinliği. 31 Mart – 2 Nisan. 400 ABD doları tasarruf etmek için FABINSIDER kodunu kullanın.
Bugün kaydolunBu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Bu öğreticide, contosoTeamStats ASP.NET web uygulamasını güncelleştirin--- Redis için Azure Cache için ASP.NET hızlı başlangıcında oluşturacaksınız--- Redis için Azure Cache ile önbellekten ayrılmış deseni kullanan bir puan tablosu ekleyebilirsiniz. Örnek uygulama, bir veritabanındaki ekip istatistiklerinin listesini görüntüler. Ayrıca performansı artırmak için önbellekten veri depolamak ve almak için Redis için Azure Cache kullanmanın farklı yollarını gösterir. Öğreticiyi tamamladığınızda, bir veritabanını okuyan ve yazan, Redis için Azure Cache ile iyileştirilmiş ve Azure'da barındırılan çalışan bir web uygulamanız vardır.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.
Bu öğreticiyi tamamlamak için aşağıdaki önkoşullara sahip olmanız gerekir:
Öğreticinin bu bölümünde, kurgusal takımlar listesi için galibiyet, mağlubiyet ve berabere kalma istatistiklerini bildiren bir puan tablosu ile ContosoTeamStats projesini yapılandırırsınız.
Visual Studio'da, Redis için Azure Cache için ASP.NET hızlı başlangıcında oluşturduğunuz ContosoTeamStats Çözümünü açın.
Araçlar > NuGet Paket Yöneticisi Paket Yöneticisi > Konsolu'nu seçin.
EntityFramework’ü yüklemek için Paket Yöneticisi Konsolu penceresinden aşağıdaki komutu çalıştırın:
Install-Package EntityFramework
Bu paket hakkında daha fazla bilgi için EntityFramework NuGet sayfasına bakın.
Çözüm Gezgini’nde Modeller’e sağ tıklayın ve Ekle, Sınıf’ı seçin.
Sınıf adı olarak girin Team
ve Ekle'yi seçin.
Team.cs dosyasının üst kısmındaki using
deyimlerini aşağıdaki using
deyimleriyle değiştirin:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.SqlServer;
sınıfının tanımını güncelleştirilmiş Team
bir sınıf tanımını Team
ve diğer bazı Entity Framework yardımcı sınıflarını içeren aşağıdaki kod parçacığıyla değiştirin. Bu öğreticide, Entity Framework ile code first yaklaşımı kullanılmaktadır. Bu yaklaşım, Entity Framework’ün kodunuzdan veritabanını oluşturmasını sağlar. Bu öğreticide kullanılan Entity Framework için ilk kod yaklaşımı hakkında daha fazla bilgi için, bkz. Yeni bir veritabanına ilk kod.
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());
}
}
Çözüm Gezgini’nde, Web.config’i açmak için çift tıklayın.
Aşağıdaki connectionStrings
bölümünü configuration
bölümüne ekleyin. Bağlantı dizesinin adı, Entity Framework veritabanı bağlamı sınıfının adı olan TeamContext
ile eşleşmelidir.
Bu bağlantı dizesi Önkoşulları karşıladığınız ve Visual Studio 2019 ile yüklenen .NET masaüstü geliştirme iş yükünün parçası olan SQL Server Express LocalDB'yi yüklediğiniz varsayılır.
<connectionStrings>
<add name="TeamContext" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Teams.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
Aşağıdaki örnek, configuration
bölümündeki configSections
bölümünü izleyen yeni connectionStrings
bölümünü gösterir:
<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>
...
Visual Studio’da projeyi derleyin.
Çözüm Gezgini'nde Denetleyiciler klasörüne sağ tıklayın ve Ekle, Denetleyici'yi seçin.
Entity Framework kullanarak görünümlere sahip MVC 5 Denetleyicisi'ni seçin ve Ekle'yi seçin. Ekle'yi seçtikten sonra hata alırsanız, önce projeyi oluşturduğunuzdan emin olun.
Model sınıfı açılır listesinden Ekip (ContosoTeamStats.Models) öğesini seçin.
Veri bağlamı açılır listesinden TeamContext (ContosoTeamStats.Models) öğesini seçin.
Denetleyici adı metin kutusuna yazın TeamsController
(otomatik olarak doldurulmazsa). Denetleyici sınıfını oluşturmak ve varsayılan görünümleri eklemek için Ekle'yi seçin.
Çözüm Gezgini’nde, Global.asax öğesini genişletin ve Global.asax.cs’yi açmak için çift tıklayın.
Aşağıdaki iki using
deyimini dosyanın üst tarafındaki diğer using
deyimlerinin altına ekleyin:
using System.Data.Entity;
using ContosoTeamStats.Models;
Application_Start
yönteminin sonuna aşağıdaki kod satırını ekleyin:
Database.SetInitializer<TeamContext>(new TeamInitializer());
Çözüm Gezgini’nde, App_Start
öğesini genişletin ve RouteConfig.cs
öğesine çift tıklayın.
RegisterRoutes
yönteminde, Default
rotasındaki controller = "Home"
öğesini, aşağıdaki örnekte gösterildiği gibi controller = "Teams"
ile değiştirin:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Teams", action = "Index", id = UrlParameter.Optional }
);
Çözüm Gezgini’nde, Görünümler klasörünü ve ardından Paylaşılan klasörünü genişletin ve _Layout.cshtml öğesine çift tıklayın.
title
öğesinin içeriğini değiştirin ve aşağıdaki örnekte gösterildiği gibi My ASP.NET Application
öğesini Contoso Team Stats
ile değiştirin:
<title>@ViewBag.Title - Contoso Team Stats</title>
body
bölümünde, Redis için Azure Cache Test bağlantısının hemen altına Contoso Team Stats için aşağıdaki yeni Html.ActionLink
deyimi ekleyin.
@Html.ActionLink("Contoso Team Stats", "Index", "Teams", new { area = "" }, new { @class = "navbar-brand" })`
Uygulamayı derleyip çalıştırmak için Ctrl+F5'e basın. Uygulamasının bu sürümü, sonuçları doğrudan veritabanından okur. Yeni Oluştur, Düzenle, Ayrıntılar ve Sil eylemlerinin Görünümlere sahip MVC 5 Denetleyici, Entity Framework kullanarak iskelesi tarafından otomatik olarak uygulamaya eklendiğini unutmayın. Öğreticinin sonraki bölümünde, veri erişimini iyileştirmek ve uygulamaya daha fazla özellik sağlamak için Redis için Azure Cache ekleyeceksiniz.
Öğreticinin bu bölümünde, StackExchange.Redis önbellek istemcisini kullanarak bir Redis için Azure Cache örneğinden Contoso ekip istatistiklerini depolamak ve almak için örnek uygulamayı yapılandıracaksınız.
Hızlı başlangıçta StackExchange.Redis istemci kitaplığı paketini zaten yüklediniz. Ayrıca yayımlanan App Service ile ve yerel olarak kullanılmak üzere CacheConnection uygulama ayarını da yapılandırdınız. TeamsController’da bu aynı istemci kitaplığını ve CacheConnection bilgilerini kullanın.
Çözüm Gezgini’nde, Denetleyiciler klasörünü genişletin ve TeamsController.cs öğesini açmak için çift tıklayın.
TeamsController.cs deyimlerini kullanarak aşağıdaki iki using
deyimini ekleyin:
using System.Configuration;
using StackExchange.Redis;
Aşağıdaki iki özelliği TeamsController
sınıfına ekleyin:
// 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;
}
}
Bu örnekte, ekip istatistikleri veritabanı veya önbellekten alınabilir. Ekip istatistikleri seri hale getirilmiş bir List<Team>
ve ayrıca, Redis veri türleri kullanılarak sıralanmış bir küme olarak veritabanında depolanır. Bir sıralanmış kümeden öğeleri alırken, belirli öğeler için bazı, tümü veya sorgu alabilirsiniz. Bu örnekte, kazanan sayısına göre sıralanan ilk beş takım için sıralanmış kümeyi sorgulayacaksınız.
Redis için Azure Cache kullanmak için ekip istatistiklerini önbellekte birden çok biçimde depolamak gerekmez. Bu öğretici, verileri önbelleğe almak için kullanabileceğiniz farklı yol ve farklı veri türlerinin bazılarını göstermek için birden çok biçim kullanır.
Aşağıdaki using
deyimlerini TeamsController.cs
dosyasının üst tarafındaki diğer using
deyimleri ile değiştirin:
using System.Diagnostics;
using Newtonsoft.Json;
Geçerli public ActionResult Index()
yöntemi uygulamasını aşağıdaki uygulama ile değiştirin:
// 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);
}
Önceki kod parçacığında eklenen switch deyiminden playGames
, clearCache
ve rebuildDB
eylem türlerini uygulamak için aşağıdaki üç yöntemi TeamsController
sınıfına ekleyin.
PlayGames
yöntemi, oyun sezonunu taklit ederek ekip istatistiklerini güncelleştirir, sonuçları veritabanına kaydeder ve artık güncel olmayan verileri veritabanından temizler.
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();
}
RebuildDB
yöntemi, varsayılan ekip kümesine sahip veritabanını yeniden başlatır, bunlar için istatistikler oluşturur ve artık güncel olmayan verileri veritabanından temizler.
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();
}
ClearCachedTeams
yöntemi önbelleğe alınan tüm ekip istatistiklerini önbellekten kaldırır.
void ClearCachedTeams()
{
IDatabase cache = Connection.GetDatabase();
cache.KeyDelete("teamsList");
cache.KeyDelete("teamsSortedSet");
ViewBag.msg += "Team data removed from cache. ";
}
Önbellek ve veritabanından ekip istatistiklerini almanın çeşitli yollarını uygulamak için aşağıdaki dört yöntemi TeamsController
sınıfına ekleyin. Bu yöntemlerin her biri, daha sonra görünüm tarafından görüntülenen bir List<Team>
döndürür.
GetFromDB
yöntemi veritabanından ekip istatistiklerini okur.
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>();
}
GetFromList
yöntemi önbellekteki ekip istatistiklerini seri hale getirilmiş bir List<Team>
olarak okur. İstatistikler önbellekte yoksa, önbellekte bir eksiklik oluşur. Önbellek isabetsizliği için, veritabanından takım istatistikleri okunur ve sonraki istek için önbellekte depolanır. Bu örnekte, önbelleğe veya önbellekten .NET nesnelerini seri hale getirmek için JSON.NET seri hale getirme kullanılmaktadır.
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;
}
GetFromSortedSet
yöntemi önbelleğe alınan bir sıralanmış kümeden ekip istatistiklerini okur. Önbellek kaçırması varsa, ekip istatistikleri veritabanından okunur ve önbellekte sıralanmış bir küme olarak depolanır.
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;
}
GetFromSortedSetTop5
yöntemi, önbelleğe alınan sıralanmış kümeden en iyi 5 takımı okur. Bu, teamsSortedSet
anahtarının varlığı için önbelleği denetleyerek başlar. Bu anahtar yoksa, takım istatistiklerini GetFromSortedSet
okumak ve önbellekte depolamak için yöntemi çağrılır. Daha sonra önbelleğe alınan sıralanmış küme, döndürülen en iyi beş takım için sorgulanır.
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;
}
Bu örneğin bir parçası olarak oluşturulan iskele kurma kodu ekip ekleme, düzenleme ve silme yöntemlerini içerir. Bir ekip her eklendiğinde, düzenlendiğinde veya kaldırıldığında önbellekteki veriler güncel olmayan hale gelir. Bu bölümde, önbelleğin yenilenmesi için önbelleğe alınan takımları temizlemek üzere bu üç yöntemi değiştireceksiniz.
TeamsController
sınıfındaki Create(Team team)
yöntemine göz atın. Aşağıdaki örnekte gösterildiği gibi ClearCachedTeams
yöntemine bir çağrı ekleyin:
// 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);
}
TeamsController
sınıfındaki Edit(Team team)
yöntemine göz atın. Aşağıdaki örnekte gösterildiği gibi ClearCachedTeams
yöntemine bir çağrı ekleyin:
// 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);
}
TeamsController
sınıfındaki DeleteConfirmed(int id)
yöntemine göz atın. Aşağıdaki örnekte gösterildiği gibi ClearCachedTeams
yöntemine bir çağrı ekleyin:
// 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");
}
Çözüm Gezgini’nde, Görünümler klasörünü ve ardından Ekipler klasörünü genişletin ve Index.cshtml öğesine çift tıklayın.
Dosyanın en üstüne yakın bir yerde, aşağıdaki paragraf öğesini arayın:
Bu bağlantı yeni bir takım oluşturur. Paragraf öğesini aşağıdaki tablo ile değiştirin. Bu tabloda yeni bir ekip oluşturmak, yeni bir oyun sezonu oynama, önbelleği temizleme, önbellekten ekipleri çeşitli biçimlerde alma, veritabanından ekipleri alma ve yeni örnek veriler ile veritabanını yeniden oluşturma eylemlerinin bağlantılarını içermektedir.
<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>
Index.cshtml dosyasının en altına kaydırın ve dosyanın son tablosundaki son satır olması için aşağıdaki tr
öğeyi ekleyin:
<tr><td colspan="5">@ViewBag.Msg</td></tr>
Bu satır, geçerli işlemle ilgili bir durum raporu içeren değerini ViewBag.Msg
görüntüler.
ViewBag.Msg
, önceki adımdaki eylem bağlantılarından herhangi birini seçtiğinizde ayarlanır.
Projeyi derlemek için F6’ya basın.
Takımları desteklemek için eklenmiş olan işlevselliği doğrulamak üzere makinenizde yerel olarak uygulamayı çalıştırın.
Bu testte uygulama ve veritabanının her ikisi de yerel olarak çalışmaktadır. Redis için Azure Cache yerel değil. Azure'da uzaktan barındırılır. Bu nedenle önbellek büyük olasılıkla veritabanını biraz düşük performansla gerçekleştirir. En iyi performans için istemci uygulaması ve Redis için Azure Cache örneği aynı konumda olmalıdır.
Bir sonraki bölümde, önbellek kullanmanın iyileştirilmiş performansını görmek için tüm kaynakları Azure'a dağıtacaksınız.
Uygulamayı yerel olarak çalıştırmak için:
Uygulamayı çalıştırmak için Ctrl+F5'e basın.
Görünüme eklenen yeni yöntemlerin her birini test edin. Bu testlerde önbellek uzak olduğundan veritabanı, önbellek performansının üzerine çıkmalıdır.
Bu bölümde, uygulamanın Azure'da barındırılırken kullanması için SQL Veritabanı'de yeni bir veritabanı sağlayacaksınız.
Azure portalında, Azure portalının sol üst köşesindeki Kaynak oluştur'u seçin.
Yeni sayfasında Veritabanları> SQL Veritabanı'nı seçin.
Yeni SQL Veritabanı için aşağıdaki ayarları kullanın:
Ayar | Önerilen değer | Açıklama |
---|---|---|
Veritabanı adı | ContosoTeamsDatabase | Geçerli veritabanı adları için bkz. Veritabanı Tanımlayıcıları. |
Abonelik | Aboneliğiniz | Önbelleği oluşturmak ve App Service’i barındırmak için kullandığınız aynı aboneliği seçin. |
Kaynak grubu | TestResourceGroup | Var olanı kullan'ı seçin ve önbelleğinizi ve App Service'i yerleştirdiğiniz kaynak grubunu kullanın. |
Kaynak seçme | Boş veritabanı | Boş bir veritabanıyla başlayın. |
Sunucu altında Gerekli ayarları>yapılandır Yeni sunucu oluştur'u seçin ve aşağıdaki bilgileri sağlayın ve seç düğmesini kullanın:
Ayar | Önerilen değer | Açıklama |
---|---|---|
Sunucu adı | Genel olarak benzersiz bir ad | Geçerli sunucu adları için bkz. Adlandırma kuralları ve kısıtlamalar. |
Sunucu yöneticisi oturum açma bilgileri | Geçerli bir ad | Geçerli oturum açma adları için bkz. Veritabanı Tanımlayıcıları. |
Parola | Geçerli bir parola | Parolanızda en az 8 karakter bulunmalı ve parolanız şu üç kategoriden karakterler içermelidir: büyük harf karakterler, küçük harf karakterler, sayılar ve alfasayısal olmayan karakterler. |
Konum | Doğu ABD | Önbelleği ve App Service’i oluşturduğunuz aynı bölgeyi seçin. |
Panoya sabitle'yi ve ardından Oluştur'u seçerek yeni veritabanı ve sunucuyu oluşturun.
Yeni veritabanı oluşturulduktan sonra Veritabanı bağlantı dizesi göster'i seçin ve ADO.NET bağlantı dizesi kopyalayın.
Azure portalında App Service'inize gidin ve Uygulama Ayarları'nı, ardından Bağlantı dizeleri bölümünün altında Yeni bağlantı dizesi ekle'yi seçin.
Entity Framework veritabanı bağlam sınıfıyla eşleşecek şekilde TeamContext adlı yeni bir bağlantı dizesi ekleyin. Yeni veritabanınız için bağlantı dizesini değer olarak yapıştırın. bağlantı dizesi aşağıdaki yer tutucuları değiştirip Kaydet'i seçtiğinizden emin olun:
Yer tutucu | Önerilen değer |
---|---|
{your_username} | Yeni oluşturduğunuz sunucu için sunucu yöneticisi oturum açma bilgilerini kullanın. |
{your_password} | Yeni oluşturduğunuz sunucunun parolasını kullanın. |
Kullanıcı adı ve parolayı Uygulama Ayarı olarak eklediğinizde, kullanıcı adınız ve parolanız kodunuz içinde yer almaz. Bu yaklaşım, bu kimlik bilgilerinin korunmasına yardımcı olur.
Öğreticinin bu adımında, uygulamayı bulutta çalıştırmak üzere uygulama güncelleştirmelerini Azure’da yayımlayacaksınız.
Visual Studio'da ContosoTeamStats projesini sağ seçin ve Yayımla'yı seçin.
Hızlı başlangıçta oluşturduğunuz yayımlama profilini kullanmak için Yayımla'yı seçin.
Yayımlama tamamlandıktan sonra Visual Studio, uygulamayı varsayılan web tarayıcınızda başlatır.
Aşağıdaki tablo örnek uygulamadaki her eylem bağlantısını açıklar:
Eylem | Açıklama |
---|---|
Yeni Oluştur | Yeni bir Ekip oluşturun. |
Sezonu Oynat | Oyun sezonunu oynatın, ekip istatistiklerini güncelleştirin ve veritabanından tüm güncel olmayan ekip verilerini temizleyin. |
Önbelleği Temizleme | Önbellekten ekip istatistiklerini temizleyin. |
Önbellekten Liste | Önbellekten ekip istatistiklerini alın. Önbellekte bir eksiklik varsa, veritabanından istatistikleri yükleyin ve bir dahaki sefere önbelleğe kaydedin. |
Önbellekten Sıralanmış Küme | Bir sıralanmış küme kullanarak önbellekten en iyi istatistiklerini alın. Önbellek eksikse, veritabanındaki istatistikleri yükleyin ve sıralanmış bir küme kullanarak önbelleğe kaydedin. |
Önbellekteki En İyi 5 Ekip | Bir sıralanmış küme kullanarak önbellekten en iyi 5 ekibi alın. Önbellek eksikse, veritabanındaki istatistikleri yükleyin ve sıralanmış bir küme kullanarak önbelleğe kaydedin. |
DB’den yükleme | Veritabanından ekip istatistiklerini alın. |
DB Yeniden Oluşturma | Veritabanını yeniden oluşturun ve örnek ekip verileri ile yeniden yükleyin. |
Düzenle / Ayrıntılar / Sil | Bir ekibi düzenleyin, ekibin ayrıntılarını görüntüleyin, ekibi silin. |
Eylemlerden bazılarını seçin ve farklı kaynaklardan verileri alma denemeleri yapın. Veritabanı ve önbellekten veri almanın çeşitli yollarını tamamlamak için gereken süre arasındaki farklılıklara dikkat edin.
Örnek öğretici uygulamasını tamamladığınızda maliyet ve kaynak tasarrufu sağlamak için Azure kaynaklarını silebilirsiniz. Tüm kaynaklarınız aynı kaynak grubunda yer almalıdır. Kaynak grubunu silerek bunları tek bir işlemde birlikte silebilirsiniz. Bu makaledeki yönergelerde TestResources adlı bir kaynak grubu kullanılmıştır.
Önemli
Bir kaynak grubunu silme işlemi geri alınamaz ve kaynak grubunun ve içindeki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. Bu örneği tutmak istediğiniz kaynakları içeren mevcut bir kaynak grubunda barındırmak için kaynakları oluşturduysanız, soldaki her kaynağı tek tek silebilirsiniz.
Azure portalında oturum açın ve Kaynak grupları’nı seçin.
Öğeleri filtrele... metin kutusuna kaynak grubunuzun adını yazın.
Kaynak grubunuzun sağındaki ... öğesini ve ardından Kaynak grubunu sil'i seçin.
Kaynak grubunun silinmesini onaylamanız istenir. Onaylamak için kaynak grubunuzun adını yazın ve Sil'i seçin.
Birkaç dakika sonra kaynak grubu ve içerdiği kaynakların tümü silinir.
Ekinlikler
31 Mar 23 - 2 Nis 23
En büyük SQL, Fabric ve Power BI öğrenme etkinliği. 31 Mart – 2 Nisan. 400 ABD doları tasarruf etmek için FABINSIDER kodunu kullanın.
Bugün kaydolunEğitim
Modül
.NET Aspire projesinde önbellekle performansı geliştirme - Training
Bu modülde.NET Aspire buluta özel bir uygulamadaki önbellekler ve mikro hizmetlerinizin performansını iyileştirmek için bunları nasıl kullanacağınız hakkında bilgi edineceksiniz.
Sertifikasyon
Microsoft Sertifikalı: Azure Cosmos DB Geliştirici Uzmanlığı - Certifications
Microsoft Azure Cosmos DB ile verimli sorgular yazın, dizin oluşturma ilkeleri oluşturun, SQL API ve SDK'da kaynakları yönetin ve sağlayın.