当类型提供者改变F#时会发生什么?

Joe*_*Joe 7 .net schema f# type-providers

在F#Type Providers上观看Channel 9的视频后,我想知道数据模式的变化.唐在最后谈到了这一点,但我正在寻找更多细节.

  1. 演示使它看起来好像你正在按'.' 探索哪些类型的数据可供您使用.在您连接到2008年美国的犯罪率之后,当您分发应用程序和架构更改时会发生什么?你得到运行时类型错误吗?开发人员有责任处理这些错误吗?

  2. 此外,这是否将责任放入类型提供者的手中?

    目前,当您下载.NET程序集时,您知道它将永远不会更改,直到您(手动或通过服务)显式更新它.必须解决来自不断变化的类型的编译错误,但您始终可以暂停升级,直到您准备好进行更改.对于类型提供者,您是否需要对它们进行更谨慎的编程?

Tom*_*cek 8

响应模式更改是类型提供程序的责任,但仅限于开发时.开发应用程序后,它将使用类型提供程序进行编译,并在编译时使用当前模式.

当您从Visual Studio使用类型提供程序时,它可以监视架构更改并通知Visual Studio IDE架构中发生了更改.我编写了一个执行此操作的XML类型提供程序示例,因此当您更改架构(用作示例的XML文件)时,您将立即在VS中收到错误.我做了一个视频演示(大约19:40).

编译程序后,类型提供程序会生成应在编译形式中使用的代码(并且在运行时不使用类型提供程序).这意味着如果架构在运行时更改,则无法对其执行任何操作(开发人员需要做出反应).如果架构更改是向后兼容的(即将新列添加到数据库表),那么您的程序仍然可以正常工作.

  • 正如Tomas所说,主要值得关注的是开发时的架构更改(例如,对于"非常动态"的数据,例如本地XML文件或电子表格,您可能在编写它们时在本地编辑它们).部署应用程序的架构更改问题与传统应用程序面临的问题完全相同,您通常要么(1)进行向后兼容的更改,(2)保留旧的数据库/架构,还要发布新的数据库/架构(旧客户端)应用程序仍在谈论旧的,新的可以与新的对话,可能有更丰富/不同的数据),或者(3)在更改架构时部署新的客户端应用程序. (2认同)