Имеет ли ServiceStack Cache внутренние запросы? - PullRequest
0 голосов
/ 16 ноября 2018

Если я использую .ToOptimizedResult (задокументировано здесь ) из «голого» запроса, например, так:

var svc = new MyService();
var svcResul = svc.Any(new requestDTO() {..});

Будет ли производительность svcResult выигрывать от кеширования или она должна бытьвызывается из Http / Messaging / Client?

Примечание: приложение на самом деле выполняет контейнер стека служб ... но вышеупомянутый вызывающий объект не вызывается изнутри службы.

1 Ответ

0 голосов
/ 16 ноября 2018

ServiceStack по умолчанию не выполняет кэширование запросов, вы должны включить кэширование, используя одну из стратегий кэширования.

Не следует использовать ToOptimizedResult() в сервисах, которые вы хотите вызватьнепосредственно, для кэшированных запросов он возвращает сериализованный сжатый byte[] результат, который недоступен как DTO Typed Response из C # API.

Для кэширования Сервисов, которые вы хотите вызывать через C #, вы можете использовать Атрибут CacheResponse вместо.

Вызов других служб

Примечание. Рекомендуемый способ вызова других служб - использование шлюза услуг , например:

var result = Gateway.Send(new RequestDto());

Если вы хотите напрямую вызывать метод C # для Службы, вам следует использовать ResolveService для разрешения службы с автоматической связью и вызова метода в операторе using, например:

using (var service = base.ResolveService<MyService>())
{
    var result = service.Any(new RequestDto());
}
...