私は現在、C#MVC REST Web APIを開発しており、設計の2つの可能性のいずれかを選択しようとしています。
設計に深く入り込むことなく、データアクセス用のクラスを作成する予定です。これをと呼びますDataSource
。DataSource
適切な応答を正しく構築するには、それぞれに含まれる小さなロジックブロックを実行する必要があります。将来的にコードをホットロードできるようにしたいので、単にこれらの関数をオンDataSource
にするのではなく、他のアセンブリによって提供されるようにします。これの概念実証が実装されており、これまでのところ、非常に優れています。
私が決定しようとしているのは、単一の静的ExecuteQuery
関数を使用して静的クラスを作成するか、ファクトリメソッドを作成して、と呼ばれるインスタンスメソッドを持つこれらのクラスのインスタンスを作成することExecuteQuery
です。
リクエストごとに複数の短命のオブジェクトを作成することと、静的メソッドを呼び出すこととの間のパフォーマンスに関する考慮事項は何ですか?
直感的には、静的メソッドの方が高速ですが、(ホットロードされたコード要件をサポートするために)リフレクションを介して静的メソッドを呼び出すのは少し頭痛の種になるとすでに予想しています。
短命のオブジェクトに大きなペナルティがない場合、単純さだけで勝つ可能性があります。
予想される負荷に関する関連情報:
- 300ms〜800msの範囲の応答時間
- 約2000のWebクライアントの平均負荷
- 約4000クライアントのピーク負荷
- 2〜5秒ごとにクエリを実行するクライアント
- 毎秒1クエリのクライアントピークレート
また、それぞれDataSource
が最大8つ、平均3つのこれらのインスタンスを作成します。