public async Task <FruitResource> GetFruitAsync(int fruitId) { // Note: In the real world, we'd use a caching interface that supports GetOrAddAsync<T> for atomicity const string region = nameof(CachingFruitService) + "|" + nameof(GetFruitAsync); var key = region + fruitId; var cached = await _cache.GetStringAsync(key); FruitResource result; if (cached != null) { _logger.LogInformation("Cached fruit found", fruitId); result = JsonConvert.DeserializeObject <FruitResource>(cached); } else { _logger.LogInformation("Cached fruit not found, retrieving from data store", fruitId); result = _dataLayer.GetFruit(fruitId); await _cache.SetStringAsync(key, JsonConvert.SerializeObject(result)); } return(_mapper.Map <FruitResource>(result)); }
public IActionResult GetFruit(int Id) { return(View(_service.GetFruit(Id))); }