Beispiel #1
0
        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));
        }
Beispiel #2
0
 public IActionResult GetFruit(int Id)
 {
     return(View(_service.GetFruit(Id)));
 }