マルチリージョンASP.NET Core セッションプロバイダー
NCache ASPを提供します.NET Core 複数のリージョンにわたるセッション共有のサポート。これにより、トラフィックまたは災害復旧のためにトラフィックを別の場所に再ルーティングする必要がある場合に、ユーザーがセッションを失うことがなくなります。セッションは、セッション全体を複製することなく WAN 経由でシームレスに複製されます。これにより、帯域幅が消費される可能性があります。
図1:データセンター間でのセッション共有
ASPを共有するには.NET Core リージョン間でセッションを行う場合は、ロケーション アフィニティを有効にする必要があります。これを有効にするには、EnableLocationAffinity フラグを true に設定し、リクエストのキャッシュのソース (場所) を識別するためのキャッシュ名とプレフィックスを指定します。 Web ファームを形成する複数のキャッシュ名を指定できますが、CacheName に対して指定されたキャッシュは、デフォルトではプライマリ キャッシュとみなされます。
マルチリージョン ASP を構成するための前提条件.NET Core セッションプロバイダー
- に基づいて、アプリケーションに次の NuGet パッケージをインストールします。 NCache バージョン:
- エンタープライズ: AspNetCore.Session。NCache
- プロフェッショナル: AspNetCore.Session。NCache。プロ
- オープンソース: AspNetCore.Session。NCache。オープンソース
- 拡張機能を利用するには、次の名前空間をアプリケーションに含めます。 スタートアップ.cs:
- キャッシュが実行されている必要があります。
- APIの詳細については、以下を参照してください。 AddNCacheセッションを開く, NCacheセッションを開く.
- 追加するデータが シリアライズ可能.
- 操作がフェイルセーフであることを保証するために、で説明されているように、アプリケーション内の潜在的な例外を処理することをお勧めします。 失敗の処理.
- 目に見えない例外を処理するには、を参照してください。 トラブルシューティング のセクションから無料でダウンロードできます。
ステップ1:サービスを構成する
セッション管理サービスを初期化する必要があります。 の スタートアップ.csには、Live モジュールで提供された AddNCacheSession()
上の拡張メソッド IServiceCollection
in ConfigureServices()
サービスを初期化します。 この拡張メソッドの非常に基本的なオーバーロードには、 IOptions<NCacheSessionConfiguration>
基本構成として。
構成を指定するには、次のXNUMXつの方法があります。
- アプリケーションStartup.csまたは
- JSON形式で アプリ設定.json .
方法1:Startup.csで構成を指定する
セッション共有を有効にするには、 EnableLocationAffinity
trueにフラグを立て、キャッシュのリストを提供します AffinityMapping
。 キャッシュの XNUMX つが CacheName と一致する必要があり、これがプライマリ キャッシュとみなされます。 両方のアプリケーションで共有されるディレクトリを指定することも必要です。
Note
キャッシュ プレフィックスの長さは最大 4 文字にする必要があります。
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(dir))
.SetApplicationName("SharedCookieApp");
services.AddNCacheSession(configuration =>
{
configuration.CacheName = "LondonCache"; //compulsory
configuration.EnableLogs = true;
configuration.SessionOptions.IdleTimeout = 5;
configuration.EnableLocationAffinity = true;
configuration.AffinityMapping = new CacheAffinity[]
{
new CacheAffinity { CacheName = "LondonCache", CachePrefix = "LDNC"},
new CacheAffinity { CacheName = "NewYorkCache", CachePrefix = "NYKC"},
new CacheAffinity { CacheName = "TokyoCache", CachePrefix = "TKYC"},
};
});
}
方法2:Appsettings.jsonで構成を指定する
セッション管理サービスを初期化する必要があります。 の スタートアップ.csには、Live モジュールで提供された AddNCacheSession()
拡張メソッド IServiceCollection
in ConfigureServices()
サービスを初期化します。 この拡張メソッドの非常に基本的なオーバーロードには、 IOptions<NCacheSessionConfiguration>
基本構成として。
Note
キャッシュ プレフィックスの長さは最大 4 文字にする必要があります。
"NCacheSettings": {
"EnableLocationAffinity": true,
"EnableLogs": true,
"RequestTimeout": 5,
"CacheName": "LondonCache",
"AffinityMapping": [
{
"CacheName": "LondonCache",
"CachePrefix": "LDNC"
},
{
"CacheName": "NewYorkCache",
"CachePrefix": "NYKC"
},
{
"CacheName": "TokyoCache",
"CachePrefix": "TKYC"
}
]
}
public void ConfigureServices(IServiceCollection services)
{
//Add framework services
services.AddMvc();
//Add services to the container
services.AddNCacheSession(Configuration.GetSection("NCacheSettings"));
}
ステップ 2: アプリケーションにミドルウェアを追加する
サービスが初期化されたら、ミドルウェアを追加して HTTP リクエスト パイプラインを構成できます。 Configure()
方法。 以下は、 UseNCacheSession()
の拡張メソッド IApplicationBuilder
を選択します。 NCache セッションミドルウェアは、常にセッションを利用するレイヤーの前にスタックする必要があります。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment()){
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseNCacheSession(); //store NCache session data
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=myApp}/{action=Index}/{id?}");
});
}
これで、に進むことができます つかいます NCache 基盤となるキャッシュとして あなたのASPのために.NET Core セッション。
その他のリソース
NCache セッション キャッシュのサンプル アプリケーションを提供します。 GitHubの.
- に同梱 NCache: %NCHOME%\ samples \ dotnetcore \ SessionCaching
も参照してください
。ネット: Alachisoft.NCache.Web.SessionState 名前空間