ASP.NET ist bekannt für die Entwicklung von Webanwendungen mit hohem Datenverkehr. Viele dieser Anwendungen werden an mehreren geografischen Standorten bereitgestellt. Diese Bereitstellung an mehreren Standorten erfolgt entweder zu Zwecken der Notfallwiederherstellung oder zur Abwicklung des regionalen Datenverkehrs, indem die ASP.NET-Anwendung näher am Endbenutzer platziert wird.
Bei der Notfallwiederherstellung gibt es normalerweise einen aktiven Standort und einen passiven Standort. Die passive Site wird aktiv, sobald die aktive Site aus irgendeinem Grund ausfällt. In anderen Fällen können zwei oder mehr Standorte alle aktiv sein, aber den Datenverkehr näher an ihrer Region abwickeln (z. B. New York, London und Tokio).
NCache Details NCache Docs ASP.NET-Sitzungszustandsanbieter
ASP.NET speichert benutzerspezifische Informationen in seinem Sitzungsstatusobjekt auf dem Webserver. Wenn der Benutzer zum ersten Mal auf die ASP.NET-Anwendung zugreift, wird ihr Sitzungsstatus erstellt und bleibt dort, solange der Benutzer die Anwendung aktiv verwendet. Standardmäßig lässt ASP.NET diese Sitzung nach 20 Minuten Inaktivität des Benutzers ablaufen.
Das ASP.NET-Sitzungsstatusobjekt wird entweder im Arbeitsspeicher auf dem Webserver (InProc), auf einem beliebigen Server (StateServer), in einer SQL Server-Datenbank oder in einem Drittanbieterspeicher mithilfe der SSP-Architektur gespeichert.
Die Option eines Drittanbieters ist normalerweise ein verteilter In-Memory-Cache wie NCache, ist ein großartiger Ort, um den Sitzungsstatus zu speichern. Die Gründe dafür sind schnellere Leistung, größere Skalierbarkeit und bessere Zuverlässigkeit des ASP.NET-Sitzungszustands aufgrund der Sitzungsreplikation. Nachfolgend finden Sie ein Beispiel dafür, wie Sie eine benutzerdefinierte Sitzungsspeicheroption in der Datei web.config angeben können, was zu folgendem Ergebnis führt: NCache als ASP.NET-Sitzungszustandsspeicher:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<sessionState cookieless ="false" regenerateExpiredSessionId="true" mode="Custom" customProvider="NCacheSessionProvider" timeout="60" sessionIDManagerType="Alachisoft.NCache.Web.SessionStateManagement.CustomSessionIdManager, Alachisoft.NCache.SessionStateManagement"> <providers> <add name ="NCacheSessionProvider" type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider" sessionAppId="demoApp" cacheName="demoClusteredCache" writeExceptionsToEventLog="false" asyncSession="false" enableLogs="false"/> </providers> </sessionState> |
Aktiv-Passiv-Multi-Site-Bereitstellung
Wenn Ihre Anwendung jedoch an mehreren Standorten ausgeführt wird, müssen Sie sich die Frage stellen, was zu tun ist ASP.NET-Sitzung Staatliche Speicherung. Wenn Sie Ihre ASP.NET-Anwendung in einer Aktiv-Passiv-Konfiguration mit mehreren Standorten bereitgestellt haben, werden alle Ihre ASP.NET-Sitzungszustände am aktiven Standort erstellt und gespeichert. Die passive Seite hat keine Sitzungsdaten. Wenn also die aktive Site ausfällt und der gesamte Datenverkehr auf die passive Site umgeleitet wird, verlieren alle Benutzer plötzlich ihre Sitzungen und müssen von vorne beginnen. Sie können dies vermeiden, indem Sie die verwenden NCache Brückentopologie.
Sobald Sie eine erstellen Bridge zwischen dem aktiven und dem passiven Standort beginnt der aktive Standort, alle Hinzufügungen, Aktualisierungen und Entfernungen von ASP.NET-Sitzungszustandsobjekten an die Bridge zu übermitteln. Die Bridge repliziert sie asynchron über das WAN zum passiven Standort. Die Bridge-Architektur blockiert die Vorgänge der aktiven Site nicht, sodass Sie keine Leistungseinbußen feststellen. Das einzige Problem, das Sie beachten müssen, ist, dass es aufgrund der asynchronen Replikation der Bridge einige Sitzungen in der „Replikationswarteschlange“ geben kann, die es nicht zur passiven Site schaffen, wenn die aktive Site abrupt heruntergefahren wird. Dies ist jedoch normalerweise eine unbedeutende Zahl. Lesen Sie mehr über NCache Brückentopologie und alle Situationen, in denen es für Sie von Vorteil ist.
NCache Details NCache Docs Eigenschaften des ASP.NET-Sitzungszustandsanbieters
Aktiv-Aktiv-Bereitstellung an mehreren Standorten
Wenn Ihre ASP.NET-Anwendung gleichzeitig auf zwei oder mehr aktiven Sites bereitgestellt wird, sollten Sie die Replikation vermeiden ASP.NET-Sitzungsstatus zu allen Standorten, um Bandbreitenkosten zu sparen. Sie möchten jedoch wahrscheinlich die Möglichkeit haben, einen Teil des Datenverkehrs an andere Websites weiterzuleiten, um Überlaufsituationen zu bewältigen.
Alternativ müssen Sie möglicherweise eine der Sites ohne Unterbrechungen für die Benutzer zu Wartungszwecken herunterfahren. In diesem Fall können Sie das Multi-Site ASP.NET Session State Storage-Feature in verwenden NCache. Mit dieser Funktion können Sie diese Fälle handhaben und in der web.config festlegen, dass Sitzungs-IDs mit einem Standortpräfix für die „primäre“ Site dieser Sitzung generiert werden. Selbst wenn diese Sitzungsanforderung dann an eine andere Site weitergeleitet wird, weiß diese Site, wo diese Sitzung zu finden ist.
Die Sitzungen werden nicht von ihrem primären Standort verschoben, selbst wenn der Benutzer eine Route zu der anderen Site anfordert. Die andere Site kann jedoch von ihrer „primären“ Site aus auf diese Sitzung zugreifen. Jede Site gibt ihre „primäre“ und alle anderen als „sekundäre“ Sites an. Im Folgenden sind die Schritte aufgeführt, die Sie unternehmen, um dieses Ziel zu erreichen:
- Eintrag in web.config hinzufügen. Es ist erforderlich, die ASP.NET-Sitzungs-ID auf allen Servern und Sites auf dieselbe Weise zu generieren. Sie können das verfügbare Dienstprogramm genmackeys verwenden NCache Installation, um die Schlüssel zu generieren.
1<machineKey validationKey ="A01D6E0D1A5D2A22E0854CA612FE5C5EC4AECF24"decryptionKey ="ACD8EBF87C4C8937" validation ="SHA1"/> - Um die Standortaffinität einer Sitzungs-ID zu aktivieren, fügen Sie die unten genannte Konfiguration hinzu:
123456<configSections><section name="ncache" type="Alachisoft.NCache.Web.SessionStateManagement.NCacheSection,Alachisoft.NCache.SessionStateManagement, Version=x.x.x.x, Culture=neutral, PublicKeyToken=CFF5926ED6A53769"/></configSections><ncache><sessionLocation><primaryCache id="London_Cache" sid-prefix="LDNC"/><secondaryCache id="NewYork_Cache" sid-prefix="NYKC"/><secondaryCache id="Tokyo_Cache" sid-prefix="TKYC"/></sessionLocation></ncache> - Geben Sie einen benutzerdefinierten Sitzungs-ID-Manager mithilfe des sessionIDManagerType-Attributs des sessionState-Elements in web.config an.
12345678910111213141516171819202122232425262728293031<<sessionStatecookieless ="false"regenerateExpiredSessionId="true"mode="Custom"customProvider="NCacheSessionProvider"timeout="60" sessionIDManagerType="Alachisoft.NCache.Web.SessionStateManagement.CustomSessionIdManager, Alachisoft.NCache.SessionStateManagement"><providers><add name ="NCacheSessionProvider"type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider"sessionAppId="demoApp"cacheName="demoClusteredCache"writeExceptionsToEventLog="false"asyncSession="false"enableLogs="false"/></providers></sessionState>
Bitte beachten Sie, dass im obigen Beispiel der Abschnitt auf jeder Website unterschiedlich ist, was bedeutet, dass jede Website ihre eigene „primäre“ Website hat und alle anderen Websites als „sekundär“ betrachtet.
NCache Details NCache Docs ASP.NET Core Sessions
ASP.NET generiert sid (Sitzungs-ID) in einem bestimmten Format, sodass das sid-Präfix Teil der Sitzungs-ID sein kann. Diese Sitzungs-ID hilft ASP.NET dabei, den Ursprung des ASP.NET-Sitzungsstatus zu ermitteln, sodass auf den Cache für diese Site zugegriffen werden kann. Wenn Sie bei dieser Konfiguration Anforderungen von einer Site an eine andere für einen Überlauf weiterleiten, ruft die andere Site den ASP.NET-Sitzungsstatus von ihrer ursprünglichen „primären“ Site ab, da dies Teil der Sitzungs-ID als Standortpräfix ist. Es minimiert Ihren WAN-Bandbreitenverbrauch, und Sie zahlen nur für überlaufenden Datenverkehr.
Die andere Situation ist, wenn Sie eine Website herunterfahren möchten. Sie können den gesamten Datenverkehr der Website auf andere Websites umleiten, ohne die Cache-Server dieser Website herunterzufahren. Sie können die Webserver herunterfahren. Warten Sie dann, bis alle vorhandenen ASP.NET-Sitzungszustandsobjekte ablaufen, nachdem ihre Benutzer die Verwendung der Anwendung eingestellt haben. Sobald der Datenverkehr umgeleitet wird, fahren Sie einfach die Cache-Server herunter. Damit werden Ihre Benutzer keine Ausfallzeiten spüren. Schauen Sie sich an, wie NCache hilft Ihnen, dieses Ziel zu erreichen. Laden Sie eine voll funktionsfähige 60-Tage-Testversion herunter NCache.