在ServiceStack模型中处理聚合

本文关键字:处理 ServiceStack 模型 | 更新日期: 2023-09-27 18:25:33

我正在开发一个基于ServiceStack的项目,该项目有一个MVC web应用程序和一些作为Azure web作业运行的消息/轮询应用程序。该项目使用了这个SO问题中推荐的一般结构,但我发现我的一些需求并不特别适合。

具体来说,在模型中处理聚合的推荐方法是什么?例如,假设我想要一个Statistics模型,它看起来像这样:

public class Statistics
{
    public int TotalCompletedSessions { get; set; }
    public int TotalAbandonedSessions { get; set; }
    public int AverageSessionDuration { get; set; }
    public int MaxSessionDuration { get; set; }
}

这是一个简单的例子,但我最好创建一个返回StatisticsResponse DTO的StatisticsRequest类,让我的服务接口使用OrmLite来提取一个返回聚合的查询吗?或者我应该让服务是超级RESTful的,只专注于提供资源(在上面的例子中,是完整的Session对象),并使用某种业务逻辑层计算这些聚合?

如果是后者,该业务逻辑应该存在于何处,是否可以/应该向外部客户提供?

在ServiceStack模型中处理聚合

我建议遵循YAGNI方法,并始终努力寻找最简单的解决方案,该解决方案只需最少的工作量、抽象和间接操作,在这种情况下,这听起来像是一个单独的OrmLite查询。