2011-11-23 9 views
7

F#タイププロバイダでChannel 9's videoを見た後、私はデータスキーマの変更について疑問に思っています。最後にこれに少し触れましたが、私は詳細を探しています。タイププロバイダがF#で変更されるとどうなりますか?

  1. デモでは、本質的に 'を押しているように見えます。利用可能なデータの種類を調べることができます。 2008年に米国で犯罪率にリンクした後、アプリケーションを配布しスキーマを変更するとどうなりますか?ランタイム型のエラーが出ますか?これらのエラーを処理するのは開発者の責任ですか?

  2. また、これは型提供者の手に責任を負わせますか?

    現在、.NETアセンブリをダウンロードすると、(手動またはサービスを通じて)明示的に更新するまで、.NETアセンブリが変更されないことがわかります。進化するタイプのコンパイルエラーを解決する必要がありますが、変更の準備が整うまでアップグレードを延期することができます。タイププロバイダーでは、それらに対してより慎重にプログラムする必要がありますか?スキーマの変更への対応

答えて

8

は、タイププロバイダの責任であるが、唯一開発時。アプリケーションを開発すると、タイププロバイダを使用してコンパイルされ、コンパイル時に現在のスキーマが使用されます。

Visual Studioのタイププロバイダを使用している場合、スキーマの変更を監視して、スキーマに変更があったことをVisual Studio IDEに通知できます。私はこれを行うXML型のプロバイダの例を書いたので、スキーマ(例として使用されるXMLファイル)を変更すると、すぐにVSでエラーが発生します。私はvideo demonstration of this(約19:40)でした。

プログラムをコンパイルすると、タイププロバイダはコンパイル済みのフォームで使用するコードを生成します(実行時にタイププロバイダは使用されません)。これは、実行時にスキーマが変更された場合、そのスキーマについて何もできない(開発者が反応する必要がある)ことを意味します。スキーマの変更が下位互換性がある(つまり、新しい列をDBテーブルに追加する)場合、プログラムは正常に動作します。

+2

主な注目すべき点は、開発時のスキーマの変更です(たとえば、ローカルXMLファイルやスプレッドシートなど、非常に動的なデータの場合)。デプロイされたアプリケーションのスキーマ変更に関する問題は、従来のアプリケーションで直面していた問題とまったく同じです。通常、(1)下位互換性のある変更を行います。(2)古いデータベース/スキーマを保持します。 (3)新しいスキーマを変更するときに新しいクライアントアプリケーションを配備すること。 – Brian

関連する問題