مشخصات مقاله
-
1637
-
0.0
-
2282
-
0
-
0
آموزش MVC Core-آموزش استفاده از Azure Cache در MVC Core
آموزش MVC Core-آموزش استفاده از Azure Cache در MVC Core
در این مقاله، ما نحوه استفاده از Azure Redis cache در ASP.NET Core یاد می گیریم.
راه حل
یک class library ایجاد کنید و بسته NuGet زیر را اضافه کنید.
- StackExchange.Redis
- Newtonsoft.json
یک کلاس اضافه کنید تا تنظیمات را محاسبه کند.
public AzureCacheSettings(string connectionString)
{
if (string.IsNullOrEmpty(connectionString))
throw new ArgumentNullException("ConnectionString");
this.ConnectionString = connectionString;
}
public string ConnectionString { get; }
}
یک کلاس برای حافظه پنهان(cache) اضافه کنید.یک constructor اضافه کنید و یک متد private برای initialize کردن Azure client
public AzureCacheStorage(AzureCacheSettings settings)
{
this.settings = settings;
Init();
}
private AzureCacheSettings settings;
private ConnectionMultiplexer connection;
private IDatabase database;
private IServer server;
private void Init()
{
connection = ConnectionMultiplexer.Connect(settings.ConnectionString);
database = connection.GetDatabase();
server = connection.GetServer(connection.GetEndPoints().First());
}
اکنون یک متد add برای دسترسی به cache اضافه می کنیم:
public async Task SetStringAsync(string key, string value)
{
await database.StringSetAsync(key, value);
}
public async Task SetObjectAsync(string key, object value)
{
await database.StringSetAsync(key, JsonConvert.SerializeObject(value));
}
public async Task< string > GetStringAsync(string key)
{
var value = await database.StringGetAsync(key);
return value.IsNullOrEmpty ? "" : value.ToString();
}
public async Task< T > GetObjectAsync< T >(string key)
{
var value = await database.StringGetAsync(key);
return value.IsNullOrEmpty ?
ult(T) : JsonConvert.DeserializeObject< T >(value);
}
public async Task< bool > ExistAsync(string key)
{
return await database.KeyExistsAsync(key);
}
public async Task DeleteAsync(string key)
{
await database.KeyDeleteAsync(key);
}
تزریق و استفاده از کلاس:
[Route("movies")]
public class MoviesController : Controller
{
private readonly IAzureCacheStorage cacheStorage;
public MoviesController(IAzureCacheStorage cacheStorage)
{
this.cacheStorage = cacheStorage;
}
[HttpGet]
public async Task< IActionResult > Get()
{
var keys = this.cacheStorage.ListKeys();
return Ok(keys);
}
[HttpGet("{id}", Name = "GetMovie")]
public async Task< IActionResult > Get(string id)
{
var model = await this.cacheStorage.GetObjectAsync< Movie >(id);
return Ok(model);
}
[HttpPost]
public async Task< IActionResult > Create([FromBody]Movie model)
{
await this.cacheStorage.SetObjectAsync(model.Id.ToString(), model);
return CreatedAtRoute("GetMovie", new { id = model.Id }, model);
}
[HttpDelete("{id}")]
public async Task< IActionResult > Delete(string id)
{
await this.cacheStorage.DeleteAsync(id);
return NoContent();
}
}
در ASP.NET Core web application ، services را پیکربندی کنید:
public void ConfigureServices(
IServiceCollection services)
{
services.AddScoped< IAzureCacheStorage >(factory = >
{
return new AzureCacheStorage(new AzureCacheSettings(
connectionString: Configuration["Cache_ConnectionString"]));
});
services.AddMvc();
}
مباحثه
کد نمونه نیاز به تنظیم Azure account و Redis cache را دارد.
Source Code این مقاله را می توانید از لینک زیر دانلود کنید:
https://github.com/TahirNaushad/Fiver.Azure.Cache
شما دانشجویان گرامی می توانید فایل مربوط به این آموزش را از قسمت پایانی این مقاله دانلود نمایید .