.net - 将 F# 用于 BLL 实现是否有意义?

标签 .net entity-framework f#

您认为使用 F# 来实现业务逻辑层是个好主意吗?我将使用 Entity Framework 作为“数据映射器”并使用 C# 实现 UI 逻辑。

欢迎任何想法。我将不胜感激任何帮助!

谢谢。

附言这样做的目的是什么?我是 F# 的新手,想尝试使用该语言(技术)。我必须实现一个相对较小的项目,获得 F# 经验可能会很好。

最佳答案

在 F# 中实现“实际数据处理”可能是目前 F# 最常见的用途,因此在 F# 中实现业务逻辑似乎是一个不错的选择。

我认为您无法直接从 F# 使用 Entity Framework (轻松),因此您需要使用 C# 生成数据模型并将相关数据公开给 F#。如果您想使用 LINQ to SQL,那么您只需在 C# 中生成映射并使用 PowerPack 在 F# 中编写查询(如 Mitya 建议的那样)。

也许最简单的事情是拥有三个项目:

  • C# 中的数据访问层 ,它只使用 Entity Framework 并公开重要数据(使用 IEnumerable 类型,可以从 F# 轻松使用)。
  • F# 中的业务层 使用数据、执行“实际处理”并公开一些可从 C# 使用的类型。如果你声明了一个 class in F#,那么它会像任何普通的 .NET 类一样被编译,所以你可以很容易地从 C# 中使用它。您只需要注意不要在公共(public)接口(interface)中使用 F# 特定功能。一些建议是使用委托(delegate)(而不是函数)、类类型和 IEnumerable(在 F# 中称为 seq)而不是函数列表。
  • C# 中的用户界面 层,它调用在 F# 中声明的类型。如果您遵循上述简单规则,则 C# 代码可以轻松调用 F# 类型。

  • 附带说明 - 尽管 F# 不支持设计器,但它对于用户界面编程非常有用(参见例如 this article 或我的演讲 about Silverlight in F# )。您可以做的一件事是在 C# 库项目中创建用户界面,将所有内容标记为公共(public),然后从实际控制用户交互的 F# 项目中引用它。但是,这有点高级,所以我认为从业务层开始是一个好主意。

    关于.net - 将 F# 用于 BLL 实现是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3840911/

    相关文章:

    c# - 在 CentOS 或 Linux 上使用 Mono 执行 .Net 应用程序

    .net - SqlCommand.Clone() 是创建深拷贝还是浅拷贝?

    c# - EF 生成的 SQL 查询在查询日期时间列时返回空结果,但该记录存在于数据库中

    open-source - F# 是开源的吗?

    f# - 如何引用 TypeProvider 创建的 'generated' 类型

    c# - 更改 DocumentViewer 的默认本地化错误消息

    .net - 在 WinForms MDI 中无法捕获 Ctrl+Alt+F1。很特别吗?

    f# - 如何将配置应用于一组基于属性的测试?

    c# - 开箱即用地更新 EF 中的子集合真的不可能吗(又名非 hacky 方式)?

    c# - Azure函数无法在没有实体提供程序的情况下使用连接字符串