25

ASP.NET Web サイトを開発しています。セッション状態モードでどちらが優れているか知りたい: InProc または SQL Server? この問題に関するあなたの経験について聞く必要があります。

別の質問は、cookieless 属性に関するものです。true に設定した場合、サイトにセキュリティ ホールはありますか? MSDN サイトで見たすべてのサンプルで、この属性は false に設定されていました。

最後の質問は Timeout 属性についてです。この属性を InProc モードに設定すると、セッションの有効期間に影響しますか?

4

3 に答える 3

33

何の点でより良いですか?

  • InProc セッションははるかに高速で、要件 (シリアル化) が少なくなりますが、複数の Web サーバーでアプリケーションを実行している場合は使用できません。

  • SQL セッションは非常に遅く、オブジェクトのシリアル化要件がありますが、複数の Web サーバー間で共有できます。

これが、開発者が主に気にする必要があるそれらの主な違いです。

Cookie のないセッション

これは前の質問とはまったく関係のない質問なので、これについては別の質問をする必要があります。

Cookie セッション ID の処理を​​オフにすると、セッション ID を確認できます。しかし、Cookie をチェックすればそうすることができます。番号はそこにあります。

また、セッション Cookie の有効期限はブラウザ セッションに設定されているため、永続性に関しては実質的に同じです。

相手のセッション ID を知っていると、セッションが乗っ取られる可能性があります。もちろん、Cookie を使用しないセッションを使用すると、URL を変更するだけで済むので簡単です...

また、URL のコピーと共有/保存 (お気に入り) には別の機能があります。問題を説明する必要はないと思います。

falseほとんどのブラウザーが Cookie をサポートしているため、 Cookie を使用しないセッションがデフォルトです。クライアントが Cookie を持っていないことがわかっている場合にのみ、オンにする必要があります。

セッションタイムアウト

セッションのタイムアウトは、セッションの種類に関係なく、常にセッションの有効期限に関連しています。ただし、期限切れのセッションを破棄するには SQL Server エージェント サービスが必要なため、SQL Express エディションを使用する場合、SQL セッションの状態がこの設定に従わない場合があることに注意する必要があります。期限切れのセッションを破棄する独自の Windows サービスを作成することで、この問題を軽減できます。

于 2011-12-31T12:22:45.677 に答える
15

セッションは 3 つの方法で使用できます。それぞれに長所と短所があります

進行中 :

  • インプロセス セッションの方が高速です。
  • シリアル化せずにオブジェクトを追加できます
  • ただし、アプリケーションが複数のサーバーで実行される場合は、1 つのサーバーに限定されます。これはうまくいきません
  • 何かが発生すると、アプリケーション プールですべてのセッション情報が失われます

セッション状態:

  • Windows サービスとして実行されます
  • アプリが複数のサーバーで実行される場合、これが役立ちます
  • セッションに追加されたオブジェクトはシリアル化する必要があります

SQLサーバー:

  • SQL サーバーを使用しますが、Oracle の実装もあります
  • ステート サーバーより遅い
  • はるかに信頼性が高い

この質問もチェックしてください: SQLServer vs StateServer for ASP.NET Session State Performance

于 2011-12-31T12:33:42.743 に答える
2

InProc セッション状態

InProc セッション モードは、セッション状態がローカルに保存されることを示します。つまり、InProc セッション状態モードでは、Web アプリケーションの AppDomain にオブジェクトが保存されます。このため、IIS (Internet Information System) の再起動時にセッション状態が失われます。
通常、AppDomain は、構成ファイルのセクションでの memoryLimit 属性の設定、Global.asax または Web.config ファイルの変更など、いくつかの要因に基づいて再起動されます。

これらの問題を克服するために StateServer または SqlServer セッション状態モードを使用できます。ここでは、セッション状態は Web アプリケーションの AppDomain に保存されません。

OutProc セッション状態

OutProc Session では、Sessin State は Web アプリケーションの AppDomain ではなく、StateServer および SqlServer モードで保存されます。

StateServer:スタンドアロンの Microsoft Windows サービスを使用してセッション変数を保存するため、このサービスは IIS から独立しており、別のサーバーで実行できます。複数の Web サーバーがセッション変数を共有できるため、このモードを負荷分散ソリューションに使用できます。IIS を再起動してもセッション変数は失われませんが、プロセスの境界を越えるとパフォーマンスに影響します。

SqlServer: SqlServer モードでは、IIS プロセスの外にあり、ローカル コンピューターまたはリモート サーバーにある状態ストアを利用することもできます。セッション情報の永続化には、SqlServer モードを使用できます。SqlServer モードは、セッション データが SQL Server で維持される点を除いて、アウト プロセス モードと似ています。

于 2016-07-16T08:51:45.707 に答える