【C#、ASP.NET】SQL Serverでセッション管理する
ほぼ完成した。公開まであと少し。
ASP.NETのセッション方法はいくつかあるのですが、今回はインメモリ OLTP でセッション管理を行う方法を紹介します。以下を参考にしました。
blogs.technet.microsoft.com
インメモリ OLTP とは
正直、僕もよくわかってないのですが、データベースのメモリ最適化を行うための手法みたいです。まぁ勝手に最適化してくれて早くなったという感じでしょうか。
インメモリ OLTP (インメモリ最適化) | Microsoft Docs
まずMicrosoft.Web.SessionState.SqlInMemoryをNugetから取得します。
取得するとプロジェクト直下に「ASPStateInMemory.sql」というクエリが作成されるのでこちらをSQLServerで実行します。FileNameのところがDドライブの指定になってるので、環境に合わせて実行してください。あえて指定しなくてよいと思うので、削除しちゃってよい思います。
CREATE DATABASE [ASPStateInMemory] ON PRIMARY ( NAME = ASPStateInMemory, FILENAME = '{ここまでののパス}\ASPStateInMemory_data.mdf' ), FILEGROUP ASPStateInMemory_xtp_fg CONTAINS MEMORY_OPTIMIZED_DATA ( NAME = ASPStateInMemory_xtp, FILENAME = '{ここまでののパス}}\ASPStateInMemory_xtp' ) GO
Web.ConfigのsessionStateも自動で書き換わるのですが、以下の項目を環境に合わせて変更します。
<sessionState mode="Custom" customProvider="SqlInMemoryProvider"> <providers> <add name="SqlInMemoryProvider" type="Microsoft.Web.SessionState.SqlInMemoryProvider" connectionString="data source=sqlserver;initial catalog=ASPStateInMemory;User ID=user;Password=password;" /> </providers> </sessionState>
- data source : サーバー名
- catalog:カタログ名
- User ID:SQL ServerのユーザーID
- Password:SQL Serverのパスワード
これでセッション管理を行うとSessionsテーブルにデータが保存されるようになります。
めっちゃ簡単だねこりゃ。