FSharp类型提供商的项目构想?

时间:2011-10-23 23:18:22

标签: f# type-providers

我打算将类型提供程序构建为开源项目。

我正在考虑通过类型提供程序模式构建一个更流畅的.NET配置api,包装ConfigurationManager等。

我还考虑包装Billboard图表(如果能找到一个,可以利用一些WS)来使它们可探索/可浏览。

还有其他建议吗?我想尝试一些有价值的东西;在严肃的编程方案中需要。

2 个答案:

答案 0 :(得分:5)

我没有任何具体的建议,但我认为有一些可能有趣的一般领域:

  • 访问网络 - 这就是F#类型提供商的设计目标,因此它可能是最适合探索的领域。已经存在标准化格式(Web服务,OData)的提供者,但是还有许多其他服务提供REST访问,而没有可以自动处理的任何元数据描述。这意味着我们需要编写一个特定于该REST API的类型提供程序。因此,寻找一些您感兴趣的REST API可能是一个很好的起点。

  • 访问数据(基础) - 这也是类型提供者的关键主题。有使用LINQ to SQL和LINQ to Entities的SQL的标准类型提供程序,但这就是它。更轻量级的SQL提供程序可能非常有趣(例如,只生成允许从SQL数据库调用存储过程的类,而不需要LINQ的开销)。此外,还有相当多的无SQL数据库,肯定也需要类型提供程序!

    除了数据库之外,还有很多其他基于文件的格式可以访问。来自Microsoft的样本包括CSV文件的类型提供程序,我只是在使用XML文件的提供程序,而JSON可能非常相似。还有什么?也许Microsoft Access或其他更具特定应用程序的格式?

  • 小型提供商 - 我不确定这是否属于常规类别,但例如Regex type provider。它依赖于解析您编写的字符串作为该类型的静态参数。 printf函数可以通过这种方式实现(但这不会非常有用)。我现在想不出其他的例子,但我确定有一些例子!

  • .NET API提供程序 - 使用类型提供程序还可以完成一些更为繁琐的事情 - 您可以使用它们来扩充现有的.NET API以及某些功能。例如,提供程序可以反映指定的.NET程序集并生成映射到原始库的类型,但是将可能返回null的函数公开为返回F#option类型的函数。 (或者,在F#异步工作流中自动包装Begin / End方法对!)

答案 1 :(得分:1)

我要构建配置“类型提供程序”。