ServiceStack 是否缓存内部请求?

Does ServiceStack Cache Internal Requests?

如果我使用 "bare" 请求中的 .ToOptimizedResult(已记录 here),如下所示:

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

svcResult 的性能是否会受益于缓存,还是必须从 Http/Messaging/Client 调用它?

注意:应用程序实际上是 运行 一个服务堆栈容器..但上面的调用者不是从服务内部调用的。

ServiceStack 默认不进行任何请求缓存,您必须使用其中一种缓存策略选择加入缓存。

您不应在希望直接调用的服务中使用 ToOptimizedResult(),对于缓存请求,它 returns 序列化压缩 byte[] 结果无法作为类型访问来自 C# 的响应 DTO API.

对于您想通过 C# 调用的缓存服务,您可以改用 CacheResponse Attribute

调用其他服务

注意:调用其他服务的推荐方式是使用Service Gateway,例如:

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

如果您想直接在服务上调用 C# 方法,您应该使用 ResolveService 来解析自动装配的服务并在 using 语句中调用该方法,例如:

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