私は、ドメイン駆動型開発と制御の逆転が、この場合に適用されるものです。ドメインモデルを非同期的にロードする
私は、スポーツイベントからタイミングデータをロードして視覚化できるアプリケーションを作成することに決めました(私はこの種のデータにかなりアクセスしています)。
1つの要件は、イベントの詳細(イベント後に生成されたCSV)とその一部がライブデータソースである、いくつかの異なるデータソースから選択できるようにすることです。
このデータをドメインにロードするプロセスを設計して、同期ロードと非同期ロードの両方に簡単に使用できるようにすることができません。
私は、すべてのデータソースが派生する抽象クラスが必要であると推測しています。このクラスは、(データファイルのパス、またはライブデータ・ソース・サーバーのアドレスを取得)自体を設定できるようにする必要があり、私はそれがこのような何かを見てする必要が推測:
protected abstract void Setup();
protected abstract void LoadData(Race race);
public Race Load()
{
Race race = new Race();
Thread t = new Thread(new ParameterizedThreadStart(LoadData));
t.Start(race);
return race;
}
各データをソースは独自のセットアップメソッドを実装することができますが、これはうんざりしているように感じます。データソースクラスがダイアログを表示するというアイデアが気に入らないのは間違っているからです。
ドメインを作成する独自のLoadDataメソッドを実装することもできます。ライブソースの場合、これは長時間実行され、発生するたびにラップタイムになります。フルデータソースは、できるだけ早く。
しかし、フロントエンドはレースオブジェクトにすぐにアクセスでき、そのイベントにバインドできます。イベントを事前に設定できるように、競合オブジェクトをloadメソッドに渡す方が良いでしょうか?
このデザインがうまくいくかどうかを知りたいだけです。私にはちょっと変わった気がして、新しいものなのかどうか分かりません。私は全体のことを考えすぎるかもしれません。