【问题标题】:How to prevent a clutter of DTO objects?如何防止 DTO 对象杂乱无章?
【发布时间】:2020-04-12 21:49:19
【问题描述】:

我正在使用DTO pattern, 我正在使用 Auto Mapper 库来帮助将域对象映射到 DTO 对象,并且效果很好。

现在我的应用程序变得越来越大,我发现自己需要许多不同的 DTO 对象来支持不同的数据需求。

例如,假设我的应用程序显示了一个员工列表,每个员工在我的应用程序中都有一个年龄属性和一个薪水属性。

在我的 UI 中,在一个页面上,我只显示所有员工的列表,在另一个页面上,我显示员工所在部门名称的列表以及每个部门的员工人数,在不同的页面上显示统计各部门平均工资、平均年龄总员工工资等...

考虑到我有很多部门和很多员工(假设有数百万员工和数千个部门,客户无法自行计算统计数据)

我的问题是,您将如何在不创建许多 DTO 的情况下构建为客户端提供服务的 API?并且不进行不必要的计算? 例如:在一个流程中计算一个部门的员工数量而不计算平均工资,在一种情况下平均工资不感兴趣,以便使 API 响应更快,而在另一种情况下计算两者。

还有其他模式可以提高效率吗?

【问题讨论】:

    标签: api oop architecture dto


    【解决方案1】:

    GraphQL 是一种潜在的选择。它是 Facebook 开发的一种工具,用于在不检索整个对象的情况下检索其域的特定部分。

    这适用于检索预先存在的域数据。它不适用于计算数据(您提到员工人数和平均工资)。只要这些是(部门的)已定义属性就可以了。

    【讨论】:

    • 您知道处理计算的任何模式或工具吗?
    • 如果您的目标是让客户能够以灵活的方式查询数据集,您可能会考虑使用数据仓库。
    猜你喜欢
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    相关资源
    最近更新 更多