2015-10-13 2 views
1

В этом методе:C# кэширование и асинхронной просит

private async List<stuff> GetData() 
{ 
    return await _appCache.GetAsync("SiteStructurePages", 
     () => _repository.GetSomeStuff()); 
} 

нет никаких оснований держать его ASync? Мой код будет выполняться асинхронным образом только один раз, и все последующие запросы будут использовать кеш. Async распространяется на другие части моего приложения, что не попадает в базу данных, потому что много вещей кэшируется.

Редактировать: Мое приложение - приложение веб-сайта IIS.

ответ

2

Есть ли какая-либо причина, чтобы держать его асинхронным?

Это действительно зависит от вас. Если вам действительно нужно воспользоваться асинхронными операциями, то есть может масштабироваться, тогда сохраните его. В противном случае, если вы этого не сделаете, используйте синхронный API. все зависит от вас и от того, что вы на самом деле используете в своей базе кода.

Я понимаю, что вы беспокоитесь о том, что методы асинхронного движения «полностью» и фактически изменяют всю вашу базу кода, чтобы стать асинхронными. Вот почему вы должны это делать, если это того стоит.

Примечание стороны - вы можете немного изменить код, чтобы сохранить себя генерацию государственной машины асинхронной:

private Task<List<stuff>> GetData() 
{ 
    return _appCache.GetAsync("SiteStructurePages", 
     () => _repository.GetSomeStuff()); 
} 
+0

Итак, я не знаю, что в моем случае это не помогает при масштабировании (метод async будет работать как 0.001 ‰ всех случаев), и я должен синхронизировать его. '' Также я не могу удалить async из этого метода, потому что результат мгновенно потребляется. – user2029276

+0

@ user2029276 Почему факт, что результат инстинктивно потребляется, имеет какое-либо отношение к тому, что я сказал? –

0

Если вы можете убедиться, что вызов выполняется быстро и что он не собирается блокировать поток пользовательского интерфейса, то, конечно, вам не нужен Async.

Однако, если такие вещи не находятся под вашим контролем, я оставил бы его асинхронным.

+0

Мое приложение является веб-сайт, и я не волнует, если первый запрос будет немного дольше. – user2029276

Смежные вопросы