CSLA フレームワークの基本的な方法論に従うアプリケーションがあります。具体的には、オブジェクトはその状態を維持する方法と、自分自身を作成、更新、削除する方法を知っています。car クラスはこの考え方を示しています。
public class Car
{
public int Color {get;set;}
public void Drive(){.. Do something Here}
private Car(){} // Only factory method can create this object
public static Car New()
{
Car car = new Car();
car.DataFetch();
return car;
}
private void DataFetch()
{
// Fill up this object with values from DB or where ever
this.Color = repo.valueForColor();
// ...
}
}
アプリケーションは 100 万を超えるオブジェクトを作成および破棄します。ガベージ コレクションの量が原因で、オブジェクト作成のせん断数がパフォーマンスに影響を与えています。また、これらのオブジェクトの多くは完全に一時的なものであり、単にデータをリポジトリに渡すために使用されます。
Flyweight パターンについて読んだことがありますが、これは私のニーズに合っているようです。また、オブジェクト プーリングと関連するコードについても読みました。
私が問題を抱えているのは、プールを使用して何百万もの Car オブジェクトを作成するか、オブジェクトの原則と組み合わせてフライウェイトのデータを外部化することで、独自のデータとデータアクセスを維持する必要があります。
これを達成する方法についてのアイデアはありますか?