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());
}
如果我使用 "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());
}