вам необходимо выполнить дорогостоящую операцию, которая может завершиться неудачно или успешно.
результат операции моделируется с использованием объекта результата Result. Объект результата содержит логическое свойство, которое сообщает, была ли операция успешной, и свойство, содержащее результат операции. Здесь вы можете найти пример такой реализации.
вы хотите использовать гибридный кэш для кэширования результата дорогостоящей операции, имея все преимущества, предоставляемые гибридным кэшем (например, защиту от давки в кэше).
вы хотите кэшировать результат операции только в том случае, если операция завершилась успешно. Если операция завершилась неудачно, вы хотите пропустить кэширование результата операции, чтобы в следующий раз можно было повторить операцию.
Есть ли простой и элегантный способ сделать это с помощью метода GetOrCreateAsync, предоставляемого Hybrid Cache? Мне кажется, что эти требования непросто сопоставить с семантикой GetOrCreateAsync
Возможное решение — использовать исключение, чтобы сигнализировать гибридному кэшу о том, что не нужно кэшировать результат неудачной операции, как это сделано здесь. Есть ли другое решение этой проблемы?
Кажется, на GitHub есть предложение по API, которое идет в том же направлении.
Предположим, что: [list] [*]вам необходимо выполнить дорогостоящую операцию, которая может завершиться неудачно или успешно.
[*]результат операции моделируется с использованием объекта результата Result. Объект результата содержит логическое свойство, которое сообщает, была ли операция успешной, и свойство, содержащее результат операции. Здесь вы можете найти пример такой реализации.
[*]вы хотите использовать гибридный кэш для кэширования результата дорогостоящей операции, имея все преимущества, предоставляемые гибридным кэшем (например, защиту от давки в кэше).
[*]вы хотите кэшировать результат операции только в том случае, если операция завершилась успешно. Если операция завершилась неудачно, вы хотите пропустить кэширование результата операции, чтобы в следующий раз можно было повторить операцию.
[/list] Есть ли простой и элегантный способ сделать это с помощью метода GetOrCreateAsync, предоставляемого Hybrid Cache? Мне кажется, что эти требования непросто сопоставить с семантикой GetOrCreateAsync Возможное решение — использовать исключение, чтобы сигнализировать гибридному кэшу о том, что не нужно кэшировать результат неудачной операции, как это сделано здесь. Есть ли другое решение этой проблемы? Кажется, на GitHub есть предложение по API, которое идет в том же направлении.