紆余曲折ありましたが(?)、Windows Azure上のWeb Roleでセッションを共有する方法を簡単に(いい加減に)まとめたいと思います。
ASP.NET標準 | ASP.NET標準 | MSDN Code Gallaryのセッションプロバイダ | ASP.NET Univarsal Providers | High Performance Session State Provider | Windows Azure AppFabric Caching | |
ストア | メモリ(InProc) | SQL Azure | Azure Storage Table | SQL Azure | SQL Azure | Windows Azure AppFabric Caching |
作成者 | MS | MS | MS? | MS | @takepara @kazuk |
MS |
SLA | 無 | 無(ストアはある) | 無(ストアはある) | 無(ストアはある) | 無(ストアはある) | 有 |
特徴 | 冗長化・負荷分散しない漢向け | 削除をなんとかしたら使えないことはない | Table使うので安い | 新入り。そつなく利用可。 | 自作上等。ASP.NET Universal Providerの残念なところを解消 | 大規模で本気出すなら商用サービスだよね |
メリット | お手軽高速 | お手軽 | お手軽で安い? | お手軽。RoleやMembershipも使える | お手軽 | 高速。一番早い。 |
デメリット | 冗長化されない・負荷分散されない | セッションが削除されない | セッションが削除されない。遅い。 | セッション削除に難あり | 自家製 | お金。 |
追加コスト | 無し | DB分必要 | 低(SQL Azureよりは安い) | DB分必要 | DB分必要 | 高め(128MB/月で3,933.45円) |
パフォーマンス | 高 | 中 | 低 | 中 | 中の上 | 高 |
その他 | パフォーマンスカウンタが付く | セッション数の把握はDB見れば可 | よくわからない | セッション数の把握はDB見れば可 | セッション数の把握はDB見れば可 | ざっくりした合計セッションサイズがある程度わかる(ただしリアルタイムでは把握できない?) |
という感じで役に立つかどうかわかりませんがまとめました。いろいろ要件にあわせて選んでくださいませ。
冗長化いらないならInProcとか。
最低限負荷分散したいけど小規模だしコストかけたくないなぁとかならAzure Storage Tableとか。
それなりにちゃんと使いたいとかならHighPerformanceSessionStateProviderとか。
いやー自分で面倒みるの大変だよとかならASP.NET Univarsal Providersとか。
大規模で性能いるんだよお金はあるぜとかならAzure AppFabric Cachingとか。
まぁ他にもMemcached使ったり、自前で負荷分散も対応したInMemoryなプロバイダ作ってもいいでしょうし。
お好みでどうぞ!
ピンバック: Webアプリのセッション管理 / Azure Plugin for Eclipseのセッション アフィニティ « S/N Ratio (by SATO Naoki)
ピンバック: Windows Azure Tools for Visual Studio 1.4 と Storage Analytics の紹介~クラウドカバー Episode 54 - Something about Development Technology :-) - Site Home - MSDN Blogs