C#.net と mysql でウェブサイト (ショッピング カート) を作成しています。.net および sql サーバーでは、sql サーバーでセッションを管理できます。これは mysql を使用して同じ方法で可能ですか? はいの場合はどうすればよいですか? 別の質問-セッションをデータベースに保存することは、ショッピングカートの正しいアプローチですか、それともメモリに保存する必要がありますか? 前もって感謝します
1 に答える
.NET Frameworkには、基本的に3つの「組み込み」セッションストレージメソッドがあります。
InProcモード。セッション状態をWebサーバーのメモリに保存します。これがデフォルトです。
StateServerモード。ASP.NET状態サービスと呼ばれる別のプロセスにセッション状態を格納します。これにより、Webアプリケーションが再起動された場合でもセッション状態が保持され、Webファーム内の複数のWebサーバーでセッション状態を利用できるようになります。
SQLServerモードは、セッション状態をSQLServerデータベースに格納します。これにより、Webアプリケーションが再起動された場合でもセッション状態が保持され、Webファーム内の複数のWebサーバーでセッション状態を利用できるようになります。
ご覧のとおり、データベースへのシリアル化をサポートしているのはSQLServerだけです。ただし、4番目のオプションがあります-独自のカスタムセッションストレージプロバイダーを作成します。クラスを継承するクラスを作成することにより、カスタムセッション状態ストアプロバイダーを実装できますSessionStateStoreProviderBase
。MSDNのこの記事では、その方法について説明しています。
ただし、StateServerモードを使用することをお勧めします。これにより、InProcを使用するリスクの多くが軽減されます(メモリが少なくなったり、アプリプールがリサイクルされたり、アプリケーションが再起動されたりすると、セッション状態が簡単に失われる可能性があります)。[Serializable()]
すべてのクラスを属性でマークすることを忘れないでください。ユーザーがサイトを離れた後もショッピングカートの情報を保持したい場合にのみ、データベースを使用します。