2

最近、別の開発者と別のフォーラムでディスカッションを行いましたが、トピックは ASP.NET でのコードの再利用でした。述べられたシナリオは、サーバーのアップタイム中に運用サーバーでコードを頻繁に更新する必要があり、その結果、すべてのユーザーのセッションがリセットされるというものでした。彼は、共有コードまたはクラスを App_Code フォルダーに配置したり、プリコンパイル済み DLL を Bin フォルダーに配置したりすることを避けています。これは、更新によってセッションも更新されるためです。

彼が思いついた解決策は、共有コードを UserControls に配置し、必要に応じてそれらを参照することです。これにより、セッションの再起動を強制することなく、次の要求で動的に再コンパイルされる UserControl ファイルのみを更新できます。Usercontrols は UI を持つことを意図していないことに注意してください。おそらく、いくつかのビジネス ロジックを格納するだけです。

本質的に間違っていると感じたので、彼を説得しようとしましたが、これが非常に悪いやり方であるという私の主張を裏付ける確固たる事実を提供することはできませんでした. 私が考えることができる唯一のことは、UI からビジネス ロジックを分離するという原則に違反していることです。私はひどく間違っていますか、それともこれを行うべきではない具体的な理由がありますか? リンクや例は役に立ちます。

注:プロセス外のセッション状態を使用することは、現時点ではオプションではなく、スケジュールされたダウンタイムを決定することもできませんでした。また、これは活発に開発中のサイトであるため、まだ専門的な展開モデルを使用していないようです。

前もって感謝します。

編集:さらに、上記のケースでセッションが再起動する理由を誰かが正確に明確にできると助かります。

4

6 に答える 6

1

これは、一般的な問題に対する賢い(そして醜い)解決策です

主な問題は、そのようなシステムのアーキテクチャです。更新が必要なコードは、彼のWebアプリの外部にある別のサービスに配置できます。その後、彼のコードビハインドはこれらのサービスを呼び出すことができ、Webアプリに影響を与えることなく、必要に応じてサービスを更新できます。

于 2009-02-05T19:35:39.143 に答える
1

すべてのベースはすでにカバーされていますが、私はこのような悪い習慣は本当に嫌いです. その人が抱えている問題を解決するために状態サーバーに簡単に変更できない場合、その人は本当に助けに値しません。彼が自分のクラスをプロジェクトのルート フォルダーに置き、それを個別にコンパイルするとどうなるでしょうか? いずれにせよ、この男はスケーラビリティについて考えておらず、ダウンタイムを計画していないため、悪い開発者だと思います。私が推測しているのは、彼は利用可能な開発環境を持っていないということです。ちっちゃい。

あなたの質問への答えとして、他の人が述べたように、コードをユーザーコントロールに入れ、よく文書化してください。

于 2009-02-05T20:08:00.170 に答える