私はASP.NET Webサイトのメンテナンスに取り組んでいます。ビジネス層やその他のサポートライブラリがHttpContext.Current.Sessionを大量に使用していることに気付きました。これにより、セッション変数を把握するのが難しくなり、セッション変数が何のために使用されているのか、なぜそれらが存在するのかが決まります。Webサイトのビジネスレイヤがセッション状態にアクセスする必要がありますか?
ビジネスレイヤでセッションを使用することは悪い習慣と考えられますか?セッションを使用するすべてのコードをコードビハインドに移行させることが賢明でしょうか?
これは単体テストについての良い点です。ビジネス層でHttpContextが必要な理由は、ログインしているユーザーに関する情報(役割とアクセス許可など)がセッションに保持されるため、ビジネスロジックの機能に影響する可能性があります。私は州を抽象化し、それを渡すことを試みます - それは良い解決策のように思えます。 – tspauld
その問題は、「現在のユーザー」は普及した概念であり、それを必要としないオブジェクトのレイヤーを通じて持ち歩くことになります。 IOCを使用する良い理由のように聞こえるが、それはまったく異なるボールゲームであり、簡単な変更ではない。 –