6

ASP.NET プロファイルはバージョン管理をどのように処理しますか? データがシリアル化されているため、テーブルではそうでない場合に問題になる可能性があることはわかっています。

ある種のシリアル化エラーをスローしますか?

例: v1 オブジェクトをプロファイルに保存します。Web アプリケーションを新しい v2 バージョンで更新しましたが、データベースにはまだ v1 オブジェクトが含まれています。

v1 オブジェクトを v2 オブジェクトにデシリアライズしようとするとどうなりますか? そして、この問題の最善の解決策は何ですか?

4

1 に答える 1

3

通常、ASP.NET はプロファイル データをプロパティ バッグとして扱います。そのため、(データ ストアに格納されている) プロパティはおそらくスキップされますが、構成からは削除されます。同様に、新しく追加されたプロパティの場合、デフォルト値が使用されます。ここで、プロパティの型も重要になります。プロパティの型がカスタム クラスの場合、そのシリアル化は XmlSerializer または BinaryFormatter によって処理されます。XmlSerializer はデフォルトであり、一般的に寛容なシリアライザーです (欠落しているプロパティはスキップされます)。属性を使用して、xml シリアライゼーションを制御できます。BinaryFormatter の場合は、ランタイムのシリアル化と同じです。バージョニングをサポートする場合は、ISerializable を実装してバージョニングの問題を処理することをお勧めします。タイプ A のプロファイル プロパティがあり、そのタイプを削除した場合にどうなるかはわかりません。

私は通常、ユーザー プロファイル機能をサポートするために独自の実装をロールアップすることを好みます。

  1. バージョン管理などは自分の好みに合わせて制御できます
  2. ストアとストレージ スキーマの選択は独立している可能性があります (これは、カスタム プロファイル プロバイダーによる ASP.NET プロファイルで可能です)。
  3. 階層化されたアプリケーションに簡単に配置でき、プロファイル データは、必要に応じて Web 以外のクライアントでも利用できます。
  4. 車輪の再発明と余分な努力が必要ですが、有効期間が 2 ~ 3 年以上のソフトウェアには価値があります。
  5. いつプロファイル データをデータ ストアに保存/取得するかを正確に制御できます。
于 2010-08-18T05:46:36.870 に答える