【发布时间】:2015-09-14 17:24:14
【问题描述】:
在 F# 中工作并实现“服务”模式(例如围绕 Web API 或数据库或 USB 小工具的包装器)时,执行此操作的惯用方式是什么?我的倾向是使用例如IDatabase 和 Database、ITwitter 和 Twitter、ICamera 和 Camera 接口和类,就像在 C# 中一样,允许轻松测试模拟。但如果这不是标准方法,我不想编写“F# 中的 C#”。
我考虑使用 DU 来表示例如Camera | TestCamera,但这意味着将所有模拟代码放入生产代码库,这听起来很可怕。但也许这只是我的 OO 背景。
我还考虑让IDatabase 成为函数记录。我仍然对这个想法持开放态度,但它似乎有点做作。此外,它排除了使用 IoC 控制器或任何“类似 MEF”的插件功能(至少我知道)的想法。
执行此操作的“惯用 F#”方式是什么?只需遵循 C# 服务模式即可?
【问题讨论】:
标签: f#