【问题标题】:Model Domain separation and Automapper in F#F# 中的模型域分离和 Automapper
【发布时间】:2019-11-22 02:05:47
【问题描述】:

我是 F# 新手,但想开始使用它构建 API。

我以前构建过 C# API。在这些模型中,我们在模型之间(在控制器中)、域 DTO 在服务中分层,最后在数据层中分层(如果需要任何持久性)。

在这些层之间,我们使用 Automapper 将类型上下映射,保持清晰的分离,例如,我们的域对象中都不能有任何空值(我们使用可能/选项)并在我们的对象之间的映射。

我已经看到了使用 F# 构建 API 的示例和很多入门,但没有关于架构的好的示例。我还看到人们尝试将 Automapper 与 F# 一起使用,但它似乎被硬塞进了,你看不到有人在网上的任何示例教程中使用它,至少我发现了。

我只是想知道人们在做什么。您是否在 F# 中使用 Automapper 之类的东西,您是否在模型和域 DTO 之间保持分离?你关心?我是不是想太多了?

我最接近的帮助是https://fsharpforfunandprofit.com/posts/recipe-part3/

【问题讨论】:

  • 就场外资源征求意见或建议显然不属于 SO 的主题,因为它往往会导致与 SO 格式不符的讨论。请参阅 help center 并考虑在论坛或聊天中发布问题。
  • 我最近阅读了 Scott Wlaschin(fsharpforfunandprofit 的作者)的推特帖子,他推荐这个存储库作为 DDD 的真实示例:github.com/atsapura/CardManagementThis is a "real world" example application, written entirely in F#. The goal is to create a best practice for building applications or at least give a reasonable manual to design one.我没看过我自己做的,但我相信 Scott 的建议,我认为这可以给你一个灵感来源。

标签: asp.net-web-api f# n-tier-architecture


【解决方案1】:

我想知道人们在做什么。您是否将模型和域 DTO 分开?

这并不常见,但我们更喜欢手动操作。我们不创建 DTO。

如果我们想传输对象,我们手动序列化和反序列化而不创建额外的对象。

DTO 通常用作序列化的辅助工具,但是您必须做同样多的工作来编写对象 DTO 映射并最终得到缓慢的、基于反射的、未优化的序列化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    相关资源
    最近更新 更多