6

バージョン管理
イベントが変更された場合は、そのイベントの新しいバージョンを作成し、古いバージョンを保持します。すべてのバージョンのイベントの処理でドメインコードフォームが肥大化するのを防ぐには、基本的に、イベントを以前のバージョンから新しいバージョンに変換するコンポーネントを導入し、それらをドメインに適用します。イベントはドメインで実際に発生したものであるため、ほとんどの場合、非推奨のイベントの情報は貴重です。

私はまだこの例を見つけていません。

何か助けはありますか?

4

1 に答える 1

3

イベント変換を処理する主な方法は2つあります。両方ともイベントの逆シリアル化中に発生します:

  1. バージョン番号(SomethingHappened、SomethingHappened2、SomethingHappened3)を使用して新しいクラスを追加できます。デシリアライザーはクラスをインスタンス化して設定し、それをコンバーターに渡して、上位バージョン(ここではSomethingHappened3)で同じイベントを取得します。問題の1つは、イベントの最後のバージョンを使用するには、イベントハンドラーも更新する必要があることです。これを軽減するために、SomethingHappenedが常に最後のバージョンであるという規則を使用できます。v2に移動するときは、SomethingHappenedの名前をSomethingHappened1に変更し、v2となるSomethingHappenedを作成します。これを行うには、シリアル化されたクラス名にバージョン番号が含まれないため、シリアル化されたイベントから作成されたクラスを制御する必要があります。それを脇に保存する必要があります。

  2. コード内のクラスのすべてのバージョンを保持する代わりに、コンバーターはドキュメント(XmlドキュメントやJSonオブジェクトなどのツリー)を受け取り、それを変更して、最後のバージョンをビルドするために必要な情報を提供します。

これはすべて、逆シリアル化パイプラインに対する制御に依存します。

于 2010-04-14T14:39:16.270 に答える