使用 ServiceStack 开发了一个类似的只读应用程序(一个地名词典,每季度/每年更新一次),我们开始优化读取 API,利用内置缓存:
// For cached responses this has to be an object
public object Any(CachedRequestDto request)
{
string cacheKey = request.CacheKey;
return this.RequestContext.ToOptimizedResultUsingCache(
base.Cache, cacheKey, () =>
{
using (var service = this.ResolveService<RequestService>())
{
return service.Any(request.TranslateTo<RequestDto>()).TranslateTo<CachedResponseDto>();
}
});
}
CacheKey 只是:
public string CacheKey
{
get
{
return UrnId.Create<CachedRequestDto>(string.Format("{0}_{1}", this.Field1, this.Field2));
}
}
我们确实开始创建 CRUD / POCO 服务,但为了加快速度,使用 SQL Server DTS/SSIS 或控制台应用程序等批量导入工具就足够了,如果需要,稍后会重新访问。
可能要考虑像 CQRS 这样的东西。
https://gist.github.com/kellabyte/1964094(或谷歌为 CQRS Martin Fowler,只能发布 2 个链接)。
最近开始实施其他搜索类型服务时,还发现以下文章很有价值:https ://mathieu.fenniak.net/stop-designing-fragile-web-apis/