ASP.NET Core Provider di sessione per NCache nelle Web Farm

ASP.NET Core è stato completamente riprogettato e quindi ha un sistema di gestione delle sessioni diverso rispetto al vecchio ASP.NET.

Sebbene l'ASP.NET Core fornisce un provider di sessioni in memoria che memorizza le sessioni sul server web stesso, ASP.NET Core memorizzazione della sessione nelle web farm è impegnativo.

Un approccio consiste nell'utilizzare sessioni permanenti nelle web farm che instradano tutte le richieste degli utenti allo stesso server Web tramite il modulo Application Request Routing. Tuttavia, le sessioni persistenti possono influire sulla scalabilità e portare a una distribuzione del carico non corretta. Un approccio relativamente migliore consiste nell'usare SQL Server per l'archiviazione delle sessioni. Tuttavia, quando si tratta di ASP scalabile.NET core applicazioni, il I database SQL diventano un collo di bottiglia delle prestazioni. Questo perché SQL Server (come tutti i database relazionali) non è in grado di archiviare BLOB e le sessioni vengono salvate nel database come BLOB.

Un'opzione praticabile è usare a cache distribuita per la memorizzazione di ASP.NET Core sessioni in una web farm. E la cache distribuita più appropriata per questo scopo è NCache che fornisce un ASP potente e ricco di funzionalità.NET Core Servizio di sessione che puoi utilizzare.

NCache è estremamente cache distribuita veloce e scalabile per .NET/.NET Core. Gestisce il carico di transazioni estremo consentendo di aggiungere più server cache in fase di esecuzione e scalare in modo lineare. Nel frattempo, NCache alta disponibilità e clustering dinamico della cache assicurati di non perdere alcun ASP.NET Core Dati di sessione se un server Web o un server cache si interrompe.

ASP.NET Core Sessione - NCache

Configurazione dell'ASP.NET Core Provider di sessione per NCache

A differenza di ASP.NET in cui si modifica solo web.config, ASP.NET richiede di modificare "Configura servizi()" nella classe Startup. Il codice seguente mostra come farlo NCache. Per ulteriori dettagli, vedere NCache ASP.NET Core Documenti di configurazione del provider di sessione e segui i passaggi.

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";
    });
}

I vantaggi dell'ASP.NET Core Provider di sessione per NCache

Prima di tutto, è necessaria pochissima programmazione da utilizzare NCache come tuo ASP.NET Core fornitore di sessioni; la modifica del codice è in ConfigureServices(IServiceCollection services) metodo in Startup classe. Vedi dettagli su Configura ASP.NET Core Provider di sessione per NCache. Di seguito sono riportati alcuni dei vantaggi per l'utilizzo NCache come tuo ASP.NET Core Fornitore dello stato della sessione:

  1. Alta disponibilità: Il tuo ASP.NET Core la maggior parte delle applicazioni richiede un'elevata disponibilità da tutto ciò da cui dipende in produzione. E, NCache ti fornisce questo tramite a architettura di clustering peer to peer autorigenerante che non ha un singolo punto di errore. NCache replica anche ASP.NET Core Sessioni quindi non c'è perdita di dati nel caso in cui un server si interrompa.

  2. Scalabilità lineare: Il tuo ASP.NET Core molto probabilmente l'applicazione deve essere ridimensionata per gestire carichi di transazioni elevati. E, se il tuo ASP.NET Core L'archivio sessioni non viene ridimensionato, quindi nemmeno la tua applicazione. Fortunatamente, NCache fornisce scalabilità lineare e non diventa mai un collo di bottiglia per il tuo ASP.NET Core applicazione.

  3. Replica intelligente della sessione: Sebbene la replica della sessione fornisca un'elevata disponibilità, ma comporta un costo in termini di prestazioni. NCache minimizza questo costo attraverso la sua ricchezza topologie di memorizzazione nella cache (Cache speculare, cache replicata e cache delle repliche delle partizioni). NCache replica i dati senza sacrificare le prestazioni in alcun modo evidente e tuttavia raggiunge l'affidabilità dei dati.

  4. Serializzazione compatta e veloce: La serializzazione regolare di .NET è spesso lenta e ingombrante per gli oggetti più grandi. Per gestire questo collo di bottiglia, NCache ha implementato un Serializzazione compatta è molto più veloce. Devi solo registrare le tue classi e NCache fa il resto. Non è necessaria alcuna programmazione. Al momento della connessione, NCache genera il codice sorgente di serializzazione, lo compila in memoria e quindi lo utilizza per la serializzazione.

Supporto per più regioni (data center)

NCache ti permette di gestire ASP.NET Core Sessioni per applicazioni in esecuzione in più regioni (data center). Eccoli:

  1. Replica WAN di ASP.NET Core sessioni: NCache fornisce una funzione di replica WAN multi-datacenter che consente anche di replicare tutti gli ASP.NET Core sessioni attraverso la WAN in un'altra regione (data center). Questo viene fatto attraverso una funzionalità di topologia bridge di NCache. Ciò garantisce che il tuo ASP.NET Core le sessioni non vengono mai perse anche se una regione (data center) non funziona.

  2. Stato sessione ASP.NET multiregione: Se non si desidera replicare lo stato della sessione ASP.NET sulla WAN a causa del costo del consumo di larghezza di banda, è possibile scegliere di utilizzare NCache Funzionalità dello stato della sessione ASP.NET multisito. In questo, lo stato della sessione ASP.NET non viene replicato tra i siti e viene invece mantenuto nella posizione della sua creazione. Tuttavia, se si sposta il traffico da una regione (data center) a un'altra, lo stato della sessione ASP.NET si sposta con esso. Per ulteriori dettagli, puoi leggere la nostra pagina del prodotto per Provider di stato sessione ASP.NET multiregione per NCache.

Funzionalità avanzate in NCache ASP.NET Core Fornitore di sessioni

ASP.NET Core Provider di sessione per NCache implementa tutti gli standard ASP.NET Core Funzionalità del provider di sessioni. Inoltre, implementa varie funzionalità avanzate per consentirti di gestire situazioni complesse nelle tue applicazioni in ConfigureServices(IServiceCollection services) metodo.

  1. Blocco della sessione standard: L'ASP standard.NET Core il comportamento di blocco della sessione è che la sessione non è mai bloccata. Di conseguenza, potresti danneggiare la sessione se tenti di aggiornarla contemporaneamente. Così, NCache ha implementato una funzionalità di blocco della sessione simile allo stato della sessione ASP.NET precedente in cui se una sessione è bloccata, un'altra richiesta attende 90 secondi (configurabile) e alla fine sblocca la sessione. È possibile specificare questa opzione di blocco come le seguenti proprietà nella "configurazione":

    services.AddNCacheSession(configuration =>
    {
    configuration.RequestTimeout = 90;
    configuration.EnableSessionLocking = true;
    configuration.SessionLockingRetry = -1;
    configuration.EmptySessionWhenLocked = false;
    ...
    });
  2. Blocco della sessione avanzato: Per un ASP ad alto traffico.NET Core applicazione, è possibile che i robot eseguano lo scraping dei dati e utilizzino lo stesso ID sessione per centinaia o migliaia di richieste contemporaneamente. In questo caso, non puoi permetterti l'opzione di blocco della sessione standard perché attendere 90 secondi potrebbe esaurire tutti i socket disponibili. Si desidera invece restituire rapidamente la richiesta per indicare un errore. Puoi specificarlo come segue:

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

    Ciò effettua 5 tentativi a intervalli di mezzo secondo e quindi restituisce una sessione vuota per indicare un errore. Anche lanciare un'eccezione qui è costoso. Ecco perché viene implementata una sessione vuota. Questo comportamento è stato originariamente implementato su richiesta da un sito Web di una compagnia aerea ad alto traffico.

  3. Registrazione degli errori: È possibile abilitare la registrazione degli errori in un file di registro sul server Web (in INSTALL_DIR\NCache\log-files\SessionStoreProvider cartella) specificando "EnableLogs" e "WriteExceptionsToEventLog" proprietà di configurazione come segue:

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

Cosa fare dopo

Iscriviti alla newsletter mensile via email per ricevere gli ultimi aggiornamenti.

© Copyright Alachisoft 2002 - . Tutti i diritti riservati. NCache è un marchio registrato di Diyatech Corp.