这种架构策略是否适用于用F#编写的业务应用程序?

时间:2010-08-20 16:35:11

标签: wpf mvvm f#

我一直在考虑如何使用WPF在F#中编写业务应用程序。这是我对如何实现它的概述的想法,但我正在寻找它是否会起作用:

  1. 从ADO.NET实体开始,自动生成数据访问层。
  2. 由于F#不支持部分类,因此使用F#扩展方法创建一个BLL,使用额外成员扩展实体对象(这些必须改变实体)
  3. 编写F#函数,而不是编写显式的ViewModel,使用对象表达式动态构建ViewModel对象。
  4. 在ViewModel对象作为输入的情况下,编写一个使用活动模式和决策树来动态构建WPF视图的F#函数。它还将负责设置View和ViewModel对象之间的绑定。
  5. 因此,打开表单或页面将涉及执行一个函数来生成ViewModel对象实例,然后将其传递给从ViewModel构建View的函数,然后将其设置为Window的内容。从那时起,它以正常的“可变”MVVM方式执行。

    我对F#的了解仍然有限,所以我可能会在这里错误的兔子洞。

    问题(S):

    • 这是否有效(一般情况下)?
    • 你知道有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

我对ADO.NET实体,MVVM或WPF了解不多,所以我不能对个人的技术想法提出太多批评。听起来你有所有这些技术的经验,并知道那里发生了什么。所以我唯一的评论是,听起来有太多新事物可以同时尝试。为了降低风险并增加成功的机会,我将在几个项目中进行分析。例如。也许从使用现有工具的传统数据层开始,然后尝试一下F#View&视图模型。一旦你解决了问题并且对F#更加熟悉,那么尝试处理数据层。

还要注意

http://blogs.msdn.com/b/dsyme/archive/2010/07/29/some-f-project-templates-available-online.aspx

包括例如F#的MVVM入门模板,如果它们提供任何想法/价值(我不清楚你的策略有多少偏离传统,知道这是否有用)。

这是另一个可能有价值或无价值的随机链接:

F# and ADO.NET - idiomatic F#

答案 1 :(得分:0)

这应该有效(因为我不确定可变实体,因为我不是F#专家)。

但我关心的是性能:F#使用大量递归,特别是在决策树的情况下,这将在运行时进行大量工作。我会考虑预先生成所有内容或缓存系统。在运行时使用元编程生成是可以的,但为什么每次只能执行一次这样做呢?