ASP.NET Core のセッションプロバイダー NCache Webファームで

ASP.NET Core 完全に再構築されたため、古いASP.NETとは異なるセッション管理システムが使用されています。

ASPですが.NET Core Webサーバー自体にセッションを保存するメモリ内セッションプロバイダーを提供します。 ASP.NET Core セッションストレージ Webファームでの作業は困難です。

XNUMXつのアプローチは、アプリケーション要求ルーティングモジュールを介してすべてのユーザー要求を同じWebサーバーにルーティングするWebファームでスティッキーセッションを使用することです。 ただし、スティッキーセッションはスケーラビリティに影響を与え、不適切な負荷分散につながる可能性があります。 比較的優れたアプローチは、セッションストレージにSQLServerを使用することです。 ただし、スケーラブルなASPに関しては.NET core アプリケーション、 SQLデータベースはパフォーマンスのボトルネックになります。 これは、SQL Server(すべてのリレーショナルデータベースと同様)がBLOBの格納に適していないため、セッションがBLOBとしてデータベースに保存されるためです。

実行可能なオプションは、 ASPを保存するための分散キャッシュ.NET Core セッション Webファームで。 そして、この目的に最も適切な分散キャッシュは NCache 強力で機能豊富なASPを提供します.NET Core 利用できるセッションサービス。

NCache 非常に .NET/用の高速でスケーラブルな分散キャッシュ.NET Core。 実行時にキャッシュサーバーを追加し、線形に拡張できるようにすることで、極端なトランザクション負荷を処理します。 その間、 NCache 高可用性と動的キャッシュクラスタリング ASPを失わないようにしてください.NET Core Webサーバーまたはキャッシュサーバーがダウンした場合のセッションデータ。

ASP.NET Core セッション -  NCache

ASPの構成.NET Core のセッションプロバイダー NCache

web.configのみを変更するASP.NETとは異なり、ASP.NETでは「ConfigureServices()"Startupクラスのメソッド。次のコードは、その方法を示しています。 NCache。 詳細については、 NCache ASP.NET Core セッションプロバイダー構成ドキュメント 手順に従ってください。

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services
    services.AddMvc();

    // Add NCache Session service to IServiceCollection with various configuration 
    // options

    services.AddNCacheSession(configuration =>
    {
        configuration.CacheName = "mySessionCache";
        configuration.EnableLogs = true;
        configuration.SessionAppId = "NCacheSessionApp";
        configuration.SessionOptions.IdleTimeout = 5;
        configuration.SessionOptions.CookieName = "AspNetCore.Session";
    });
}

ASPのメリット.NET Core のセッションプロバイダー NCache

まず第一に、使用するために必要なプログラミングはほとんどありません NCache ASPとして.NET Core セッションプロバイダー; コードの変更は ConfigureServices(IServiceCollection services) メソッド Startup クラス。 詳細を見る ASPを構成する.NET Core のセッションプロバイダー NCache。 以下は、使用することの利点のいくつかです NCache ASPとして.NET Core セッション状態プロバイダー:

  1. 高可用性: あなたのASP.NET Core アプリケーションは、本番環境に依存するあらゆるものからの高可用性を最も必要とします。 と、 NCache を通じてこれを提供します 自己修復型ピアツーピアクラスタリングアーキテクチャ 単一障害点はありません。 NCache ASPも複製します.NET Core サーバーがダウンした場合でもデータが失われないようにセッションします。

  2. 線形スケーラビリティ: あなたのASP.NET Core ほとんどの場合、アプリケーションは、高いトランザクション負荷を処理するためにスケーリングする必要があります。 そして、あなたのASPが.NET Core セッションストアは拡張されないため、アプリケーションも拡張されません。 幸運なことに、 NCache は、大阪で 線形スケーラビリティ ASPのボトルネックになることはありません.NET Core アプリケーション。

  3. インテリジェントセッションレプリケーション: セッションレプリケーションは高可用性を提供しますが、パフォーマンスコストが伴います。 NCache 豊富な機能により、このコストを最小限に抑えます キャッシングトポロジ (ミラーリングされたキャッシュ、複製されたキャッシュ、およびパーティション-レプリカキャッシュ)。 NCache 目立った方法でパフォーマンスを犠牲にすることなくデータを複製し、それでもデータの信頼性を実現します。

  4. 高速コンパクトシリアル化: 通常の.NETシリアル化は、大きなオブジェクトの場合、多くの場合、遅くてかさばります。 このボトルネックを処理するには、 NCache を実装しました コンパクトなシリアル化 それははるかに高速です。 クラスを登録するだけで NCache 残りは行います。 プログラミングは必要ありません。 接続時に、 NCache シリアル化ソースコードを生成し、メモリ内でコンパイルしてから、シリアル化に使用します。

複数のリージョン(データセンター)のサポート

NCache ASPを管理できます.NET Core 複数のリージョン(データセンター)で実行されているアプリケーションのセッション。 はい、どうぞ:

  1. ASPのWANレプリケーション.NET Core セッション: NCache すべてのASPを複製できるマルチデータセンターWAN複製機能を提供します.NET Core WANを介して別のリージョン(データセンター)へのセッション。 これは、のブリッジトポロジ機能を介して行われます。 NCache。 これにより、ASPが確実になります.NET Core リージョン(データセンター)がダウンしても、セッションが失われることはありません。

  2. マルチリージョンASP.NETセッション状態: 帯域幅の消費コストのためにWAN全体でASP.NETセッション状態を複製したくない場合は、使用することを選択できます NCache マルチサイトASP.NETセッション状態機能。 この場合、ASP.NETセッション状態はサイト間で複製されず、代わりにその作成場所に保持されます。 ただし、あるリージョン(データセンター)から別のリージョン(データセンター)にトラフィックを移動すると、ASP.NETセッション状態も一緒に移動します。 詳細については、当社の製品ページをご覧ください。 マルチリージョンASP.NETセッション状態プロバイダー NCache.

の高度な機能 NCache ASP.NET Core セッションプロバイダー

ASP.NET Core のセッションプロバイダー NCache すべての標準ASPを実装します.NET Core セッションプロバイダーの機能。 さらに、さまざまな高度な機能を実装して、アプリケーションの複雑な状況を処理できるようにします。 ConfigureServices(IServiceCollection services) 方法。

  1. 標準セッションロック: 標準ASP.NET Core セッションのロック動作は、セッションがロックされないことです。 その結果、セッションを同時に更新しようとすると、セッションが破損する可能性があります。 それで、 NCache は、以前のASP.NETセッション状態と同様のセッションロック機能を実装しました。セッションがロックされている場合、別の要求が90秒間待機し(構成可能)、最後にセッションを強制的にロック解除します。 このロックオプションは、「構成」の次のプロパティとして指定できます。

    services.AddNCacheSession(configuration =>
    {
    configuration.RequestTimeout = 90;
    configuration.EnableSessionLocking = true;
    configuration.SessionLockingRetry = -1;
    configuration.EmptySessionWhenLocked = false;
    ...
    });
  2. 強化されたセッションロック: トラフィックの多いASPの場合.NET Core アプリケーションでは、ロボットがデータをスクレイピングし、同じセッションIDを数百または数千のリクエストに同時に使用する場合があります。 この場合、90秒間待機すると、使用可能なすべてのソケットが占有される可能性があるため、標準のセッションロックオプションを使用する余裕はありません。 代わりに、失敗を示すためにリクエストをすばやく返す必要があります。 これは次のように指定できます。

    services.AddNCacheSession(configuration =>
    {
    configuration.EnableSessionLocking = true;
    configuration.SessionLockingRetry = 5;
    configuration.EmptySessionWhenLocked = true;
    ...
    });

    これにより、5秒間隔でXNUMX回再試行され、失敗を示すために空のセッションが返されます。 ここで例外をスローすることでさえ、コストがかかります。 そのため、空のセッションが実装されます。 この動作は元々、トラフィックの多い航空会社のWebサイトからの要求に基づいて実装されました。

  3. エラーロギング: Webサーバー上のログファイルへのエラーログを有効にすることができます( INSTALL_DIR\NCache\log-files\SessionStoreProvider フォルダ)「EnableLogs」と「WriteExceptionsToEventLog"構成プロパティは次のとおりです。

    services.AddNCacheSession(configuration =>
    {
    configuration.EnableLogs = true;
    configuration.WriteExceptionsToEventLog = false;
    ...
    });
    

次はどうする

お問い合わせ(英語)

電話
©著作権 Alachisoft 2002 - . All rights reserved. NCache はダイヤテック株式会社の登録商標です。