如果我从“裸”请求中使用.ToOptimizedResult(记录为here),如下所示:
var svc = new MyService();
var svcResul = svc.Any(new requestDTO() {..});
svcResult的性能会从缓存中受益吗,还是必须从Http / Messaging / Client调用它?
注意:应用程序实际上正在运行servicestack容器。.但是,上述调用者不是从服务内部调用的。
答案 0 :(得分:1)
ServiceStack默认情况下不执行任何请求缓存,您必须使用一种缓存策略选择加入缓存。
您不应在要直接调用的服务中使用ToOptimizedResult()
,对于缓存的请求,它会返回序列化的压缩byte[]
结果,该结果不能作为C#API的类型化响应DTO进行访问。
对于要通过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());
}