IoCを使用してサービス参照をコントローラーに挿入し、リポジトリ参照をサービスに挿入するASP.NETMVCアプリがあります。
コントローラは、リクエストごとにインスタンス化する必要があるため、一時的なライフタイムを持っている必要があります。ただし、IoCスタック全体がリクエストごとに更新される場合、これは少しオーバーヘッドになります。必要以上の依存関係があります。1つのオプションは、スタック内の依存関係が少ないコントローラーを増やすことです。しかし、今のところそれはさておき、私の質問は、シングルトンとして注入されたオブジェクトに一時的な存続期間を持つ依存関係がある場合、それらの依存関係は、シングルトンによって所有されているため、本質的にシングルトンのように扱われますか?
具体的には、次のような場合
RepositoryA(現在の設計ではコンストラクターにユーザーコンテキストが挿入されるため、一時的である必要があります)ServiceA(シングルトン)ControllerA(一時的)
そのようにインスタンス化:
public ServiceA(IRepositoryA repo) {}
public ControllerA(IServiceA service) {}
ServiceAは1回インスタンス化されるため、RepositoryAは基本的に1回インスタンス化されますか?
答えは「はい」であると99%確信していますが、ここで実行する必要のあるリファクタリングの量を確認したかっただけです。
また、設計アプローチとして、サービスとリポジトリにユーザー/リクエスト固有のインスタンス変数がないと仮定すると、それらにシングルトンライフタイムを使用しない理由はありますか?