Skalierung ASP.NET Core Apps mit NCache

Aufgezeichnetes Webinar
Von Ron Hussain und Zack Khan

ASP.NET ist eine sehr beliebte Technologie für die Entwicklung von Webanwendungen. Jetzt seine neueste Version ASP.NET Core gewinnt schnell an Popularität bei Unternehmen, die ihre Webanwendungen auf ASP umstellen möchten.NET Core. Aber ASP.NET Core führt zu Skalierbarkeits- und Leistungsproblemen, wenn es einer hohen Benutzerlast ausgesetzt wird. Dies geschieht, weil Ihr Datenspeicher zum Engpass wird. Es gibt jedoch eine Möglichkeit, diesen Leistungs- und Skalierbarkeitsengpass zu umgehen, wenn Sie verteiltes Caching verwenden. Erfahren Sie, wie Sie Ihren ASP optimieren können.NET Core Leistung und Skalierbarkeit für extreme Transaktionslasten.

Folgendes wird in diesem Webinar behandelt:

  • Überblick über ASP.NET Core Skalierbarkeit und Leistungsengpässe
  • Wie verteiltes Caching diese Probleme löst
  • App-Daten-Caching über ASP.NET Core IDistributedCache-Schnittstelle und Direct NCache APIs
  • ASP.NET Core Sitzungsspeicher mit NCache
  • ASP.NET Core Antwort-Caching mit NCache
  • Einige wichtige NCache verteilte Cache-Funktionen

Im heutigen Webinar geben wir einen Überblick über ASP.NET Core Skalierbarkeits- und Leistungsengpässe und wie verteiltes Caching diese Engpässe und andere Probleme löst. Wir werden über ASP sprechen.NET Core Anwendungen, was sind ihre Leistungs- und Skalierbarkeitsengpässe und dann werden wir darüber sprechen, wie diese Leistungs- und Skalierbarkeitsengpässe mit Hilfe von behoben werden können NCache Verteiltes Caching-System.

NCache ist ein verteiltes In-Memory-Caching-System für Ihr .NET und .NET Core Anwendungen. Es ist in .NET geschrieben und hauptsächlich für .NET und .NET Core Anwendungen, aber in erster Linie wird der Fokus heute auf ASP liegen.NET Core Web-Apps und ich habe einige Beispielfunktionen zur Verfügung. Ich habe auch einige Anwendungsbeispiele zusammengestellt. Es wird also ein praktisches Webinar, in dem ich einige Details auf Funktionsebene verschiedener Anwendungsfälle, die Sie erfassen können, und Funktionen, die dazu da sind, diese Anwendungsfälle anzugehen, mit Ihnen teilen werde, und ich werde diese Beispiele auch demonstrieren. Lass uns anfangen.

Unsere ersten Folien sind also Einführungsfolien zu ASP.NET Core Plattform im Allgemeinen. Ich bin mir ziemlich sicher, dass jeder weiß, was ASP ist.NET Core ist. Es ist die neue ASP-Webanwendungsplattform. Es ist sauber, leicht und modular. Was den Webanwendungsansatz betrifft, handelt es sich hauptsächlich um die MVC-Architektur. Wissen Sie, das beliebte Front-End Angular, React ist hauptsächlich ein JavaScript-basiertes Front-End und dann eine MVC-Architektur, um es zu sichern. Es ist plattformübergreifend. Sie können es unter Windows, Linux und jedem anderen Betriebssystem wie macOS ausführen. Und normalerweise ist es auch sehr kompatibel mit Legacy-4.0-ASP.NET-Anwendungen.

ASP.NET Core (Beliebt in Apps mit hohem Traffic)

Wenn Sie eine ASP.NET MVC-Anwendung haben, können Sie jetzt davon migrieren und dann mit der Verwendung von ASP beginnen.NET Core Technologie, die sehr schnell, sehr robust und sehr leicht ist und im Allgemeinen eine saubere Architektur.

Was ist Skalierbarkeit?

Als erstes werden wir über ASP sprechen.NET Core Plattform erfordert Skalierbarkeit. Lassen Sie uns also definieren, was Skalierbarkeit ist? Jede Anwendung, die unter normaler Benutzerlast läuft und mit normalisiert meine ich, dass einige Benutzer vorhanden sind. Nehmen wir an, 5 bis 10 Benutzer sind angemeldet und führen bestimmte Transaktionen, bestimmte Operationen, Lese- und Schreibanforderungen durch. Die typische Idee dabei ist, dass Ihre Anwendung bei geringer Benutzerlast superschnell wäre. Aber sobald Ihre Anwendungslast wächst und dies auch eine Anforderung für das Geschäft ist, müssen sich immer mehr Benutzer bei Ihren Anwendungen anmelden. Dann neigen Ihre Anwendungen dazu, langsamer zu werden. Bei Spitzenlasten kann es zu einer langsamen Leistung kommen.

Wenn Ihre Anwendung nicht in der Lage ist, dieselbe Leistung beizubehalten, die sie bei einer geringen Anzahl von Benutzern hatte, und wenn sie dann bei einer hohen Anzahl von Benutzern dieselbe Leistung beibehält, wird diese Anwendung als sehr skalierbare Anwendung kategorisiert. Die Architektur verfügt über die Fähigkeit, horizontal zu skalieren und die erhöhte Last Ihrer Endbenutzer zu bewältigen. Eine hohe Leistung unter Spitzenlasten ist also das, was den Skalierbarkeitsfaktor tatsächlich definiert.

Hier ist eine Grafik. Typischerweise wird die Skalierbarkeit innerhalb von ASP.NET und ASP erreicht.NET Core Plattform über mehrere Web- oder App-Server.

Lineare Skalierbarkeit

Sie können Ihre Anwendungslast verteilen. Sie stellen Ihre Anwendung einfach auf mehreren Web- oder App-Servern bereit und verteilen auf dieser Grundlage einfach die Benutzerlast Ihrer Anwendung auf diese Server. Wenn Sie weitere Server hinzufügen, erhalten Sie eine lineare Verbesserung der Verarbeitungskapazität für Anfragen. Mehr Server bedeuten mehr Kapazität zur Verarbeitung von Anfragen aus Ihrer Anwendung.

Hier ist eine nichtlineare Skalierbarkeit, bei der die Architektur auch nach dem Hinzufügen weiterer Server nicht so ausgelegt ist, dass Sie zwar viele Webserver oder App-Server hinzufügen, aber Ihre Anwendungen nicht wie Ihre Benutzerlast skalieren wachsend.

Nichtlineare Skalierbarkeit

Ihre Transaktionsanforderungen steigen also und Sie fügen Server hinzu, Sie unternehmen alle richtigen Schritte, aber Sie sind immer noch nicht in der Lage, die Kapazität zu gewinnen, die Sie benötigen, um die erhöhte Anforderungslast zu bewältigen. Dieses Problem ist also typischerweise mit Backend-Datenquellen verbunden, und ich werde darüber sprechen.

Sehen wir uns also zunächst einmal an, welche Anwendungen Skalierbarkeit benötigen. Was sind die verschiedenen Arten von Anwendungen? Innerhalb von ASP.NET & .NET Core Wir haben Web-Apps und MVC-Webanwendungen, die das Hauptgeschäft ausführen, einige Webdienste, einige Dienstaufrufe, einige Mikrodienste, das ist die neue Architektur, und es könnte jedes andere allgemeine .NET oder sein .NET Core Anwendung.

All dies erfordert Skalierbarkeit, da Sie möglicherweise viele interne oder externe Benutzer haben oder eine Last anfordern, die von Ihrer Anwendungsarchitektur erfüllt werden muss.

Das Skalierbarkeitsproblem

Ich habe erwähnt, dass Sie eine Webfarm erstellen können. Sie können Ihre Anwendungslast auf mehrere Server verteilen. Wo genau liegt also das Skalierbarkeitsproblem? Wie Sie sehen können, sollten Sie beim Hinzufügen von Servern in der Lage sein, immer mehr Anforderungslasten zu bewältigen, da Sie eine lineare Skalierbarkeit in Bezug auf App-Farm oder Web-Farm erhalten.

Aber wann genau sehen Sie eine nichtlineare Skalierbarkeit oder überhaupt keine Skalierbarkeit? Das ist typischerweise bei relationalen Datenbanken der Fall. Ihre Anwendungsebene lässt sich gut skalieren, richtig. Sie können weitere Server hinzufügen. Sie können mehrere Instanzen derselben Anwendung auf derselben Box erstellen oder separate Boxen haben, die Ihre Anwendungen hosten. Aber alle diese Anwendungen kommunizieren normalerweise mit einer relationalen Backend-Datenbank, und eine relationale Datenbank eignet sich sehr gut für die Speicherung, aber wenn es beispielsweise darum geht, eine extreme Menge an Anforderungslast zu bewältigen, haben Sie beispielsweise eine Menge Transaktionslast auf Ihren Anwendungen, diese Datenbank wird ein Engpass. Es wird zuallererst die Dinge verlangsamen, also ist es ein Leistungsengpass und dann hat es keine Kapazität, um die Skalierbarkeit zu erhöhen. Es hat keine Fähigkeit, die Kapazität zu erhöhen. Es würde Ihnen nur die Kapazität des angegebenen Servers geben, auf dem die Datenbank gehostet wird.

Es könnte auch eine Mainframe-Datenbank sein. Es könnte irgendein Dateisystem sein. Alle diese Quellen stellen einen Skalierbarkeitsengpass für Ihre Anwendung dar, und das ist der Punkt, an dem Ihre Anwendungen langsamer werden. Ihre Anfragen beginnen, sich in die Warteschlange zu stellen, und die allgemeine Erfahrung des Endbenutzers wird dadurch beeinträchtigt. NoSQL ist nicht die Antwort. Weißt du, ich verstehe das sehr NoSQL Produkte sind da. Wir haben auch ein Produkt namens NosDB, die ein NoSQL database. Aber das Hauptproblem mit NoSQL databases ist, dass Ihre Anwendungen eine neue Architektur erfordern würden, bei der Sie aufhören, eine relationale Datenbank zu verwenden, und anfangen, eine zu verwenden NoSQL unstrukturierte Datenquelle im Vergleich.

Die Neuarchitektur der Anwendung ist also auch nicht einfach, richtig. Also, das ist ein weiteres Problem, das Sie nehmen müssen. Insgesamt sind Ihre Anwendungen also nicht skalierbar, hauptsächlich aufgrund von Backend-Datenquellen.

Die Lösung: NCache Verteilter Cache

Was ist die Lösung? Es ist sehr einfach, dass Sie anfangen, ein verteiltes Caching-System wie z NCache. Es ist In-Memory, also superschnell im Vergleich zur Datenbank. Das ist also der erste Vorteil, den Sie daraus ziehen. Also mit In-Memory-Zugriff im Vergleich zum festplattenbasierten Zugriff NCache ist im Vergleich super schnell. Profitieren Sie also zunächst von Ihren regelmäßigen Bewerbungsanfragen NCache im Vergleich zu Datenbanken superschnell sein und auch die Datenbank entlasten, indem Wege zu den Backend-Datenquellen eingespart werden. Ihre Datenbank kann also auch andere Dinge tun. Der zweite Vorteil ist, dass es sehr skalierbar ist. Es ist in seinem Modell linear skalierbar. Es ist nicht nur ein einzelner Server. Es gibt mehrere Server, die Sie zum Hosten Ihres Cache-Clusters verwenden können. Es ist ein Cache-Cluster. Das Team von Servern arbeitet also zusammen und hilft dabei, Ihre Kundenanfragen zu erfüllen. Mehr Server bedeuten mehr Kapazität zur Verarbeitung von Anfragen NCache und das ist, wo es Ihnen enorme Vorteile bringt, wo nicht nur Sie superschnelle Antworten erhalten NCache, es ist superschnell, hat eine geringe Latenz und bietet Ihnen außerdem einen hohen Durchsatz und eine extrem hohe Skalierbarkeit. Sie können weitere Server hinzufügen und diese Kapazität linear erweitern, wenn Ihre Benutzerlast wächst, ohne etwas in Ihrer Anwendungsarchitektur zu ändern.

Und, nette Sache über NCache ist, dass Sie es zusätzlich zu einer Backend-Datenbank verwenden. Es ist kein Ersatz für Ihre herkömmlichen relationalen Datenquellen. Wir müssen die Anwendung nicht neu strukturieren, um sie verwenden zu können NCache. Sie können immer verwenden NCache in Kombination mit einer Back-End-Datenquelle, in der sich einige oder die meisten Ihrer Daten befinden NCache und die Datenbank hat eine Masterkopie davon. Aber für einige Anwendungsfälle hätte der Cache alle Daten. Zum Beispiel für Sitzungen und andere Anwendungsfälle.

NCache Skalierbarkeitszahlen

Hier sind unsere Durchsatzzahlen. Wir haben diese Tests in unserem AWS-Labor durchgeführt. Dies waren reale Anwendungsdaten, die in unserem AWS-Labor simuliert wurden. Es sind also keine Touch-and-Go-Daten. Tatsächliche Anwendungsdaten simuliert, in unserer Umgebung. Wo wir 5 verwendet haben NCache Server und wir konnten 2 Millionen Anfragen pro Sekunde erreichen NCache.

Das ist also die Art von Leistungsverbesserungen, die Sie haben, oder Skalierbarkeitszahlen, die Sie haben, wenn Sie immer mehr Server hinzufügen. Also 2 Millionen Anfragen pro Sekunde mit nur 5 NCache Server und es war ein sehr linear steigender Trend und er sollte weiter steigen, wenn Sie weitere Server hinzufügen.

Diese werden auch auf unserer Website veröffentlicht. Da ist ein Video-Demonstration auch verfügbar.

Bereitstellungsarchitektur

Hier ist unsere Bereitstellungsarchitektur. Normalerweise geht das so NCache verteiltes Caching-System wird bereitgestellt. Es wird in allen Umgebungen sowohl vor Ort als auch in der Cloud unterstützt. Das ist möglich, es muss lediglich .NET oder NET Core Framework verfügbar sein. Das ist die einzige Voraussetzung für NCache und Sie können es sowohl auf Windows- als auch auf Linux-Servern bereitstellen. Es könnten Ihre physischen oder virtuellen Boxen vor Ort sein oder es könnte jede öffentliche oder private Cloud sein, in der Sie .NET oder .NET Core auf Windows oder Linux installiert. Das sind also zwei Anforderungen.

Davon abgesehen NCache wird auf jeder Plattform unterstützt. Es ist erhältlich in Azure Marketplace, sowie AWS und wir entwickeln auch ein SaaS-basiertes Modell oder die Bereitstellung von NCache in unseren kommenden Versionen.

Es gibt zwei Bereitstellungsoptionen. Zum einen sollten Sie dedizierte Server für das Caching verwenden und Ihre Anwendungen in einem Client-Server-Modell verbinden. Das ist auch das bevorzugte Modell in der Cloud, wo Sie keine clientseitigen VMs, aber eine serverseitige Bereitstellung haben.

Und die zweite Bereitstellungsoption besteht darin, dass Sie Ihre vorhandenen Anwendungsboxen als Ihre verwenden NCache Server ebenso. Das ist meistens vor Ort, wo Sie bereits eine Anwendungsschicht haben. Kleinere Konfigurationen, die Sie vielleicht verwenden möchten NCache auf der gleichen Box, dem gleichen Satz von Servern installiert werden.

So oder so NCache wickelt den größten Teil Ihres Datenverkehrs ab. 100 % wird empfohlen, und ein Teil des Datenverkehrs kann immer an die Back-End-Datenbank geleitet werden, und dies könnten Ihre transaktionalen Lese- und Schreibvorgänge sein, die Sie über den Cache an Back-End-Datenquellen verarbeiten können.

Sie können also entweder den Cache als Site-Muster verwenden, bei dem Ihre Anwendung Daten enthält und Daten aktualisiert oder Daten aus dem Cache und der Datenbank in Verbindung miteinander abruft, oder Sie können den Read-Through- und Write-Through-Ansatz verwenden, der ebenfalls mit verfügbar ist NCache.

Allgemeine Verwendung von verteiltem Cache

Ich werde über einige Anwendungsfälle sprechen und dann springen wir direkt zu unseren ASP.NET Core spezifisches Caching Merkmale. Lassen Sie uns also über einige häufige Anwendungsfälle von sprechen NCache. Es gibt viele Anwendungsfälle. Und aus technischer Sicht habe ich einige aufgeführt, und diese sind spezifisch für ASP.NET Core Anwendungen, sondern im Allgemeinen für alle .NET oder ASP.NET oder ASP.NET Core or .NET Core. Es könnte eine Webanwendung, eine Back-End-Anwendung, einige Workflows, einige Windows-Dienste sein, jede Anwendung, die verwendet werden kann NCache und es gibt viele Anwendungsfälle, aus denen Sie wählen können.

  1. App-Daten-Caching

    In erster Linie für ASP.NET Core, zielen wir auf das Zwischenspeichern von App-Daten ab, und dabei haben wir zwei Optionen. Sie können verwenden IDistributedCache-Schnittstelle. Wenn Sie IDistributedCache bereits in Ihren Anwendungen verwenden, können Sie es einfach anschließen NCache als Anbieter dafür. Das ist also die erste Option. Die zweite Option ist, dass Sie direkt verwenden NCache APIs und In-App-Daten-Caching cachen Sie fast alles in Ihrer Anwendung. Dies können Ihre Domänenobjekte, Sammlungen, Datensätze oder beliebige Daten sein, die Sie mehr als einmal verwenden möchten und nicht zur Backend-Datenbank wechseln möchten. Sie haben diese Daten abgerufen und können diese Daten jetzt in der speichern cache und Sie können das Cache-Repository weiterhin verwenden und Reisen in die Datenbank sparen.

  2. ASP.NET Core Sitzungs-Caching und SignalR Backplane

    Zweiter Anwendungsfall ist ASP.NET Core spezifisches Caching. Dies sind unsere Web-Front-End-Caching-Funktionen. An dieser Front haben wir viele Funktionen. Sie können ASP verwenden.NET Core Sitzungszustand. Wissen Sie, es sind Single-Site- und Multi-Site-Sitzungen. NCache ist ein verteilter Cache-Cluster. Ihre Sitzungen werden also verteilt im Inneren gespeichert NCache. Es ist auch eine Option ohne Codeänderung, fast mit einer Codeänderung in der Erweiterungsmethode, in die Sie einstecken NCache. Es sind keine umfangreichen Codeänderungen erforderlich, um dies zu verwenden, und diese sind im Inneren sehr zuverlässig NCache da Sitzungen serverübergreifend repliziert werden. Wenn also ein Server ausfällt, treten auf Ihrer Seite keine Datenverluste oder Anwendungsausfallzeiten auf.

    Das zweite Merkmal hier ist ASP.NET Core Antwort-Caching. Wenn Sie statische Seiten haben. Früher hatten wir in ASP.NET Ausgabe-Caching. Im neueren ASP.NET Core Plattform können Sie das Response-Caching verwenden, bei dem Sie Kopfzeilen auf Seitenebene definieren und auf der Grundlage dieser Seitenausgaben alle diese Seiten zwischengespeichert werden NCache. Antworten werden also zwischengespeichert. Wenn Sie genau dieselben Anforderungen erneut stellen, erhalten Sie die vorab zwischengespeicherte Antwort zur Verfügung gestellt. Das ist also eine Funktion innerhalb NCache, die auch eine Option ohne Codeänderung ist, die Sie auf ASP verwenden können.NET Core Front-End-Caching-Level.

    Und dann, wenn Sie SignalR verwenden und eine Webfarm haben, benötigen Sie unbedingt eine Backplane. So, SignalR Backplane ist erforderlich, wenn Sie von einem einzelnen Server zu einer Webfarm-Bereitstellung wechseln und in diesem Fall NCache kann als ASP fungieren.NET Core Rückwand, SignalR Backplane für Ihre SignalR-Anwendungen. Es verwendet Pub/Sub-Messaging hinter den Kulissen, die ereignisgesteuert sind. Sehr schnell, sehr skalierbar. Sie profitieren also von hoher Leistung und Skalierbarkeit sowie hoher Verfügbarkeit und Zuverlässigkeit, wenn Sie ein Plug-in verwenden NCache als ASP.NET Core SignalR Backplane.

  3. Pub/Sub-Messaging

    Der dritte Anwendungsfall schließlich ist Pub/Sub-Messaging. Pub/Sub-Messaging ist ebenfalls ein separater Anwendungsfall. Für SignalR verwenden wir hinter den Kulissen Pub/Sub-Messaging. Pub/Sub Messaging kann jedoch als separater Anwendungsfall innerhalb verwendet werden NCache auch. Für Microservices-Anwendungen ist dies sehr sinnvoll, wenn Sie einfache Anwendungen haben, die unter der Microservices-Architektur definiert sind. Diese sind für eine dedizierte Aufgabe verantwortlich. Ein sehr wichtiger Zweck, dem sie dienen. Daher ist es sehr schwierig, die Kommunikation zwischen diesen Microservices zu arrangieren und NCache kann dieses Problem lösen. Sie müssen keine Kommunikation innerhalb Ihrer Microservices-Anwendungen selbst implementieren. Du kannst dich auf .... verlassen NCache Kommunikationsplattform dafür und jede damit verbundene Anwendung kann Nachrichten senden und empfangen, und es muss dabei keine Leistungseinbußen geben.

    Sie können ein Publisher-Abonnentenmodell haben. Wo Publisher Daten im Cache veröffentlichen und der Cache diese Nachrichten dann speichert und an alle Abonnenten weiterleitet. Es ist ein asynchroner ereignisgesteuerter Mechanismus. Verlag und Abonnent müssen sich also nicht einmal kennen. Es gibt also keine Latenz, keine Wartezeiten, keine synchronen Anrufe. Es ist also eine sehr robuste, sehr schnelle, lose gekoppelte Architektur, und alles wird von verwaltet NCache, soweit es diese Plattform betrifft.

Hands-on-Demo

Also haben wir diese High-Level-Features abgedeckt. Als nächstes werde ich Ihnen das eigentliche Produkt in Aktion zeigen. Wo erstelle ich einen Cache-Cluster. Probier es aus. Zeigen Sie Ihnen einige Überwachungsaspekte, und dann sprechen wir über all diese Funktionen, die Sie in ASP verwenden können.NET Core Einer nach dem anderen. Dafür habe ich einige Beispielanwendungen zusammengestellt. Also melde ich mich bei meiner Demoumgebung an.

Hier haben wir also zwei NCache Server, die ich verwenden werde, und meine Box würde als Client-Rechner fungieren, von dem aus ich all diese Beispielanwendungen ausführen würde. Die Idee hier ist also, dass ich die verwenden werde webbasiertes Verwaltungstool und Überwachungstool.

Mit diesem webbasierten Verwaltungstool können Sie also alles von einem einzigen Punkt aus verwalten und überwachen. Es könnte jede Web-Anfrage sein, http-Anfrage von überall, von Ihrer Umgebung zu einer Ihrer Umgebungen NCache Server oder Clients und es sollte Ihnen ermöglichen, alles remote über das Internet zu verwalten und zu überwachen.

Erstellen Sie einen geclusterten Cache

Also, localhost, Sie können eine IP-Adresse angeben und Sie können einfach von überall über das Internet auf diese Ressource zugreifen. Also werde ich weitermachen und einen neuen Cache erstellen. Sagen wir mal „aspcorecache“. Alle Caches müssen benannt werden. Sie können auch mehrere Cache-Cluster erstellen und sich bei Bedarf einen aussagekräftigen Cache-Namen ausdenken.

Der Serialisierungsmodus kann binär oder JSON sein. Also bleibe ich binär, bleibe bei Binär und dann ist JSON auch sehr flexibel, also, wenn Sie das verwenden möchten, dann wähle ich die Partition der Replica-Cache-Topologie.

Innerhalb NCache da sind viele Caching-Topologien. Wenn ich dich schnell zum Ende bringe. Wir haben also viele Caching-Topologien zur Auswahl. Wir haben partitioniert und dann haben wir eine Partitionierung mit Backups. In diesem Fall verwaltet also jeder Server zwei Partitionen. Eine aktive Datenpartition, mit der Clients verbunden sind, und eine passive Replikatpartition eines anderen Servers. Wie Sie sehen können, ist Server eins aktiv, sein Backup ist auf zwei und Server zwei ist aktiv, sein Backup ist auf Server eins. Falls ein Server ausfällt, wird das Backup aktiviert und Sie erhalten alle Daten von hier. Im normalen Betrieb weisen diese Partitionen eine gleichmäßige Datenverteilung auf.

Clients sind mit allen Servern verbunden, sodass Lese- und Schreibanforderungen superschnell sind, und wenn Sie weitere Server hinzufügen, erhalten Sie mehr Lese- und Schreibanforderungsverarbeitungskapazität, da alle diese Server in Kombination miteinander arbeiten. Das ist also die Topologie, für die ich die Replikatpartition wähle.

Und dann die asynchrone Replikationsoption. Zwischen aktiv und Backup können Sie synchron oder asynchron wählen. Die Synchronisierung ist zuverlässiger. Asynchron ist schneller. Also werde ich damit weitermachen.

Größe 1024 ist gut genug für diese Demo, aber Sie können sich jede Größe ausdenken, die Ihnen sinnvoll erscheint.

TCP-Parameter.

Frage: Wir verwenden derzeit NCache, gibt es eine Möglichkeit, eine client.ncc- oder nc-conf-Datei oder etwas, das Sie in Ihrer Entwicklungspipeline haben, zu vermeiden?

Ja. Das ist absolut möglich. Mit client.ncconf können Sie Konfigurationen angeben, um eine Verbindung zu einem Cache-Server herzustellen, auf dem der Cache-Cluster ausgeführt wird, richtig. In meinem Fall habe ich zwei Boxen und einen Cache-Namen. Client.ncconf enthält also den Cache-Namen und die Server, auf denen dieser Cache konfiguriert ist. Wenn Sie client.ncconf vermeiden möchten, können Sie alle diese Einstellungen inline bereitstellen. Wir haben Cache-Initialisierungsparameter. Wir nennen sie Cache-Init-Parameter. Mit diesem Objekt können Sie alle diese Konfigurationen im Anwendungscode angeben. Also ja. Um diese Frage zu beantworten, müssen Sie Cache-Init-Parameter verwenden.

Frage: Können wir einsetzen NCache in Azur?

Absolut. Ich habe dies besprochen, als wir Details über die Bereitstellungsarchitektur ausgetauscht haben. NCache wird in Microsoft Azure und AWS und jeder anderen öffentlichen oder privaten Cloud vollständig unterstützt. Nur Voraussetzung für NCache ist .NET bzw .NET Core, hängen von dem von Ihnen gewählten Betriebssystem ab. Wir entwickeln auch unser SaaS-Modell innerhalb von Azure und AWS. Es wird also voll unterstützt. Unser Marktplatz-Image wird ebenfalls veröffentlicht. Es gibt also viele Möglichkeiten, die Sie verwenden können NCache in Azur.

NCache ist ein TCP/IP-basiertes Cache-Clustering-Protokoll. Es erfordert also eine IP-Adresse und einen Port. Also behalte ich einfach alles standardmäßig auf dem Bildschirm.

Wenn mein Cache voll wird, habe ich zwei Möglichkeiten: Ich kann neue Updates ablehnen und den Cache weiterhin zum Lesen verwenden oder ich kann Räumungen aktivieren und es würde automatisch einige Daten entfernen, um Platz für die neueren Elemente zu schaffen.

Für Sitzungen, für den Ansichtsstatus, für das Zwischenspeichern von Antworten und sogar für das Zwischenspeichern von Objekten empfehle ich dringend, dass Sie die Räumung deaktivieren und eine ausreichend große Gasgröße bereitstellen, damit sie niemals voll wird und selbst wenn sie voll wird, wenn Daten von wichtiger Natur sind Sie können die Cache-Größe zur Laufzeit ändern. Aber wenn es in Ordnung ist, es sich leisten zu können, ist es in Ordnung, tatsächlich einige Daten zu verlieren, wenn Sie sich das leisten können. In diesem Fall können Sie also Räumungen aktivieren, und wenn der Cache voll wird, werden automatisch einige Daten entfernt und Platz für die neueren Daten geschaffen. Also, das ist, was Räumung tut.

Starten Sie diesen Cache beim Beenden und starten Sie diesen Cache automatisch beim Start des Dienstes. Jedes Mal, wenn mein Server neu gestartet wird, wird der Cache automatisch gestartet, und das war's. So einfach ist es, einen Cache-Cluster mit zwei Knoten zu konfigurieren NCache.

Stress simulieren und Cache-Statistiken überwachen

Unser Cache ist also in Betrieb. Es ist auch aktiviert, also werde ich schnell weitermachen und es testen. Statistikfenster. Diese zeigen mir also Perfmon-Zähler beider Server und dann Überwachungsaspekte von NCache.

Sehr gut. Es gibt mir also auch eine serverseitige und clientseitige Dashboard-Berichtsansicht. Es sind also alle Parameter vorhanden.

Als nächstes wird dieser Cache getestet. Keine Anwendung ist verbunden, also werde ich weitermachen und das tun. Das ist der Name des Caches, und hinter den Kulissen verwendet dieser clientseitige Konfigurationen, um eine Verbindung herzustellen, und würde eine Verbindung zu meinem Cache-Cluster herstellen und mit der Simulation von Anforderungen beginnen. Wie Sie sehen können, zeigen der Zähler „Anforderungen pro Sekunde“ und der Zähler „Durchschnittliche Mikrosekunde pro Cache-Vorgang“ die Aktivität an. Wir haben auch Ergänzungen, Abrufe, Aktualisierungen und wir haben Cache-Größenzähler, CPU, Speicher und wir haben Client-IPs, die derzeit mit dem Cache verbunden sind.

Lassen Sie mich fortfahren und eine weitere Instanz dieses Tools ausführen.

Frage: Eine andere Frage, während Sie dies taten, ist, können wir alle Clients überwachen, die mit unseren Caches verbunden sind?

Absolut. Das ist eine der sehr mächtigen Funktionen darin NCache. Ich kann das anhand dieses Beispiels zeigen. Jetzt haben wir zwei Clients verbunden. Zunächst einmal kann ich die Client-Dashboards sehen. Diese beiden Clients werden also von 107 aus ausgeführt, und ich kann sehen, dass Lesevorgänge von dieser Client-Box aus durchgeführt werden. Wenn ich Anwendungen von meiner Box aus führe, was ich tun würde, würden Sie hier auch meine Box-Statistiken sehen, und ähnlich können wir auch die Prozesse, ihre Prozess-IDs, Ports, gesendete und empfangene Bytes von hier sehen. Aber ich denke, das Wichtigste, wonach Sie suchen, sind verschiedene Überwachungsaspekte von der Clientseite. Wir haben also Lesevorgänge pro Sekunde, Hinzufügungen pro Sekunde, Aktualisierungen pro Sekunde, Abrufe.

Wir haben also einen vollständigen Satz von clientseitigen Zählern, die als Teil von verfügbar sind NCache, rechts und Cache-Zustand und dies sind alles serverseitige Zähler, aber alle diese Zähler, die Sie unter clientseitig anzeigen, können hinzugefügt werden, und Sie können alle diese auch für Ihre Client-Anwendungsserver überprüfen.

Damit NCache ist sehr umfangreich in seiner Unterstützung für clientseitiges Monitoring. Ich hoffe, das beantwortet Ihre Frage.

Jetzt habe ich tatsächlich ausgeführt, dass ich zwei Instanzen des Stresstest-Tools ausführen kann, und Sie können jeweils etwa 800 bis 900 Anforderungen pro Sekunde sehen NCache Server. Es werden also durchschnittlich etwa 1500 Anfragen pro Sekunde bearbeitet.

Das war also eine kurze Demo. Ich werde diese Tools stoppen. Als nächstes werde ich Ihnen die tatsächlichen Funktionen zeigen, die Sie tatsächlich nutzen können. Wir haben also viel Zeit damit verbracht, zu erklären, wie NCache ist sehr skalierbar.? Wie wird es bereitgestellt? Wie konfiguriere und erstelle ich einen Cache-Cluster?

Nun, das nächste, was ich hervorheben möchte, ist die Verwendung NCache im ASP.NET Core Anwendungen und was sind die primären Anwendungsfälle. Wir haben verschiedene Anwendungsfälle behandelt. Ich beginne also mit Anwendungsfällen für das Web-Front-End-Caching in ASP.NET Core.

NCache ASP.NET Core Sitzungs-Caching

Also, das erste Feature, das ich hervorheben werde, ist NCache ASP.NET Core Sitzungs-Caching. Wir haben hier zwei Möglichkeiten. Sie können verwenden, wenn Sie bereits Sitzungen verwenden und die meisten Chancen bestehen, dass Sie die IDistributedCache-Schnittstelle verwenden würden. Sie können sich also anschließen NCache als Anbieter für Sitzungs-Caching über IDistributedCache. Sie haben einen eigenständigen In-Memory-Anbieter. Sie haben einen SQL-Serveranbieter. Standalone ist ein Single Point of Failure. Es ist nicht skalierbar. SQL Server ist in einigen Fällen auch ein Single Point of Failure. Es ist nicht skalierbar und sehr langsam.

NCache Anbieter ist super schnell. Es ist im Speicher. Es ist sehr skalierbar. Es ist kein Single Point of Failure und Sie erhöhen die Kapazität zur Laufzeit. Sie können also immer mehr Server hinzufügen und Sie können eine unbegrenzte Skalierbarkeit erreichen NCache. Also, IDistributedCache, lassen Sie uns das schnell überprüfen. Also, hier ist unser Ratespiel, IDistributedCache.

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

	services.AddNCacheDistributedCache(configuration =>
        {
	   configuration.CacheName = "MyNCacheCache";
	   configuration.EnableLogs = true;
	   configuration.ExceptionsEnabled = true;
        });
}

public void Configure(IApplicationBuilder app)
{
	app.UseNCacheSession();
}

Alles, was Sie tun müssen, ist, Dienste hinzuzufügen NCache Distributed Cache und sagen Sie dann App Use NCache Sitzung und hier ist eine Beispielanwendung, die genau das tun wird.

public IConfigurationRoot Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddMvc();

            //To test sessions with NCache Distributed Cache, uncomment the following lines and comment the line after it
            services.AddNCacheDistributedCache(Configuration.GetSection("NCacheSettings"));
			services.AddSession();			
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        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();

Zweite Option hier ist NCache Sitzungsanbieter, der über erweiterte Funktionen verfügt, und ich habe auch eine Beispielanwendung dafür. Konzentrieren wir uns also wirklich darauf. In erster Linie, weil unser Anbieter im Vergleich zu IDistributedCache viel funktionsreicher ist, möchte ich dies hervorheben, und als Teil davon würden Sie alle Funktionen sehen, die Ihnen der IDistributedCache-Anbieter ebenfalls bietet.

Also, komm hierher zurück. Zuallererst brauchen Sie NCache NuGet-Paket, das ich bereits darin hinzugefügt habe. Also, wenn wir haben AspNetCore.Sessions.NCache, Rechts. Das ist also das NuGet-Paket, und lassen Sie mich schnell hierher zurückkommen und die Sitzung auch hier überprüfen, und das hat NCache.Microsoft.Extensions.Caching. Daher unterscheiden sich die NuGet-Pakete für IDistributedCache-Sitzungen geringfügig von den NCache tatsächlicher Sitzungsanbieter.

Also werde ich mich hier auf dieses konzentrieren. Alles, was Sie tun müssen, ist …. Kommen Sie zunächst zu Startup.cs. Sie haben Dienste.HinzufügenNCacheSitzung und es dauert NCache Einstellungen in der Konfiguration.

... 
    public IConfigurationRoot Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.
        services.AddMvc();
        
        //To test sessions with NCache Distributed Cache, uncomment the following lines and comment the line after it
        //services.AddNCacheDistributedCache(Configuration.GetSection("NCacheSettings"));
		//services.AddSession();
			
        services.AddNCacheSession(Configuration.GetSection("NCacheSettings"));
    }
    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();
... 

Und innerhalb der Konfiguration geben Sie alle an NCache Anbietereinstellungen. Zum Beispiel verwende ich ASP.NET Core Zwischenspeicher. SessionAppId ist ein App-ID-Attribut, an das die App den Cache-Elementschlüssel angehängt bekommt. Ihre Sitzungs-ID wird zum Cache-Schlüssel und dieses Attribut wird daran angehängt. So können Sie Sitzungen verschiedener Anwendungen darin einzeln anzeigen NCache und dann richten Sie einige Sitzungssperren ein. Sie können, wenn Sie dies auf wahr setzen. In Ordnung, wenn Sie dies auf true setzen, können Sie die Sitzung einfach sperren, sodass ein gleichzeitiger Zugriff nicht zulässig ist.

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  },
  "NCacheSettings": {
    "CacheName": "mycache", //Replace "myPartitionedCache" with the name of your cache
    "SessionAppId": "GuessGame", //(Optional)Specifies an identifier to make sure that session ID remains unique in case multiple applications are using the same cache.
    "EnableSessionLocking": false, //(Optional)If this flag is set, NCache Session Store Provider exclusively locks the session-store item for which multiple concurrent requests are made. The default is false.
    "SessionLockingRetry": -1, //(Optional)If enableSessionLocking is true and this integer is not less than 0, NCache Session Store Provider will return empty session after sessionLockingRetry, which specify the number of retries to acquire a lock. The default is -1.
    "EnableLogs": false, //(Optional)When this flag is set, store provider logs all error information. The log files are created in %NCHOME%/log-files/SessionStoreProvider. The default is false.
    "EnableDetailLogs": false, //(Optional)When this flag is set, store provider logs all debugging information. The log files are created in %NCHOME%/log-files/SessionStoreProvider. The default is false.
    "ExceptionsEnabled": false, //(Optional)Specifies whether exceptions from cache API are propagated to the page output. Setting this flag is especially helpful during development phase of application since exceptions provide more information about the specific causes of failure. The default is false.
    "OperationRetry": 0, //It specifies the number of times server will retry the operation, in case connection is lost with a server while an operation is executing. Its default is zero.
    "operationRetryInterval": 0 //It specifies the time interval between each operation retry, in case connection is lost with the server. Its default value is zero.
  }
}

Sie können also nur Sitzungen lesen. Schreibzugriff wird nur auf die aktuelle Anfrage gewährt, die das Protokoll enthält, und dann stehen uns detaillierte Protokolle zur Verfügung. Single-Site- und Multi-Site-Sitzungen sind verfügbar. All diese Funktionen sind also nur verfügbar, wenn Sie unseren ASP anschließen.NET Core Sitzungsanbieter. IDistributeCache-Sitzungen werden unterstützt, diese sind jedoch begrenzt. Also werde ich das ganz schnell ausführen und das würde eine Anwendung simulieren, die sich schließlich mit diesem ASP verbinden würde.NET Core Zwischenspeicher.

Lass mich eigentlich damit aufhören. Lassen Sie mich zuerst meine Box als Client hinzufügen. Hier muss ich also nur die Client-Box hinzufügen, die hier meine Box ist.

Los geht's. Ich habe jetzt alle Konfigurationen und jetzt kann ich diese Anwendung noch einmal ausführen, und das sollte eine Verbindung zu meinem Cache-Cluster herstellen dürfen. Sehr gut. Daher wird die erstmalige Instanziierung einige Zeit in Anspruch nehmen.

Dies würde also ein Sitzungsobjekt im Inneren erstellen NCache. Ich werde sehen, wenn ich zum Überwachungsaspekt gehe, würde ich sehen, dass ein Client verbunden ist. Sobald der Anbieter initialisiert ist, würde dieser Client eine Verbindung zu 107 und 108 herstellen und darin Sitzungsobjekte erstellen NCache. Im Moment würde nur ein Sitzungsobjekt erstellt, da dies der Hauptbenutzer ist. Ich werde der einzige Benutzer sein, der angemeldet ist, aber wenn Sie mehrere Anwendungsbenutzer haben, werden mehrere darin erstellte Sitzungen angezeigt NCache. Aber die Idee hier ist, dass es sehr einfach ist, dass Sie nur diese beiden Codezeilen hinzufügen müssen. Hinzufügen NCache Sitzung und sagen Sie dann Verwenden NCache Session.

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();

//To test sessions with NCache Distributed Cache, uncomment the following lines and comment the line after it
//services.AddNCacheDistributedCache(Configuration.GetSection("NCacheSettings"));
//services.AddSession();
			
services.AddNCacheSession(Configuration.GetSection("NCacheSettings"));
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
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();
    //To test NCache Distributed Cache, uncomment this and comment the line below this
    //app.UseSession();
    app.UseNCacheSession();
... 

Diese Erweiterungsmethoden decken alles ab. Die erste Instanziierung dauert etwas länger, das haben wir in ASP gesehen.NET Core aber sobald es soweit ist, sollten die Anwendungen betriebsbereit sein und wir sollten es sehr schnell testen können. Los geht's. Ein Client ist bereits verbunden, also denke ich, dass wir es geschafft haben.

Lassen Sie mich in der Zwischenzeit einen schnellen Befehl ausführen, der export lautet. Dieses Tool gibt alle derzeit vorhandenen Cache-Schlüssel aus.

Ich erwarte also, dass ein Sitzungsobjekt im Cache hinzugefügt wird, da ein Client verbunden ist, und das sollte mir ermöglichen, dass es zwei Sitzungen gibt. Eine vom vorigen Versuch und eine von diesem, ist schon da. Los geht's.

Dies ist ein Ratespiel, mit dem Sie eine Zahl erraten können, und es fügt diese Zahlen innerhalb der Sitzung hinzu und zeigt diese Zahl auch an. Lassen Sie mich also einfach eine größere Zahl raten, und so wird die Anfrage gestellt NCache.

Es ist also eine ziemlich einfache Anwendung, aber wenn Sie hierher zurückkommen, haben wir zwei Elemente im Cache, die dort sind, und Sie müssen diese beiden Anfragen gesehen haben, auf die ich gerade gestellt habe NCache serverseitig.

Das vervollständigt also unsere erste Demonstration, dass Sie ein Plug-in machen können NCache für Sitzungs-Caching. Es gibt viele Funktionen. Single-Site- und Multi-Site-Sitzungen werden unterstützt. Sitzungssperre wird unterstützt. Es steht eine umfangreiche Protokollierung zur Verfügung. Es ist sehr sicher. Wir haben Sicherheit und Verschlüsselung obendrauf. Es ist also ein komplettes Paket, wenn Sie es verwenden möchten NCache für Sitzungs-Caching.

ASP.NET Core Antwort-Caching

Das zweite Merkmal hier ist ASP.NET Core Antwort-Caching. In diesem Fall haben wir HTTP-Header in den Anwendungen. Sie können festlegen, dass Seitenausgaben zwischengespeichert werden und Sie verwenden NCache Response-Caching-Middleware zum Caching und wiederum über die IDistributedCache-Schnittstelle. Also, wenn ich hierher zurückkomme, haben wir das hier Beispielanwendung.

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Alachisoft.NCache.Caching.Distributed;

namespace ResponseCaching
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddResponseCaching();
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            #region Option1
            // Reading NCacheSettings using appsettings.json

Alles, was Sie tun müssen, um dies zu verwenden, ist, dieses NuGet-Paket zu verwenden NCache.Microsoft.Extensions.Caching. Dies umfasst Sitzungen, IDistributedCache für das Zwischenspeichern von Objekten und das Zwischenspeichern von Antworten in einem NuGet-Paket.

Und das nächste, was Sie tun müssen, ist Dienste.HinzufügenNCacheVerteilter Cache.

// This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddResponseCaching();
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            #region Option1
            // Reading NCacheSettings using appsettings.json
            services.AddNCacheDistributedCache(Configuration.GetSection("NCacheSettings"));
            #endregion

            #region Option2
            // Reading NCacheSettings using hardcoded values
            //services.AddNCacheDistributedCache(options =>
            //{
            //    options.CacheName = "myPartitionedCache";
            //    options.EnableLogs = true;
            //    options.ExceptionsEnabled = true;
            //});
            #endregion

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }

Das ist also eine IDistributedCache-Schnittstelle, die angeschlossen wird, aber wir verwenden sie für das Response-Caching und in den App-Einstellungen haben wir die Cache-Namen und einige Protokollierungseinstellungen, die wir eingerichtet haben, und wenn ich hierher zurückkomme, hätten Sie das Response-Caching ebenfalls konfiguriert, services.AddResponseCaching();

...
namespace ResponseCaching
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddResponseCaching();
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });
...

Diese Anwendung erwartet also, dass das Response-Caching durchgeführt wird. Es wäre durch NCache mit der IDistributedCache-Schnittstelle. Also werde ich das ganz schnell ausführen, weil es einige Zeit dauert, und dann erwarten, dass es tatsächlich eine Verbindung herstellen kann NCache und dann zeigen wir Ihnen tatsächlich die hinzugefügten Daten.

Wenn ich dir den Code zeige. Wissen Sie, Sie können Konfigurationen auch inline angeben. Beispiel: „HinzufügenNCacheDistributedCache“ und Sie können den Cache-Namen „demoClusteredCache“ oder „aspCoreCache“ sagen und alle Einstellungen inline angeben

public void ConfigureServices(IServiceCollection services)
{
...
   services.AddNCacheDistributedCache(configuration => 
   {
	configuration.CacheName = "demoClusteredCache";
	configuration.EnableLogs = true;
        configuration.ExceptionsEnabled = true;
   });
...
}

oder Sie können einfach die verwenden NCache Einstellung und Einstellungen durchgeben NCache Einstellungen, genau hier. Dies kann durch Konfiguration oder durch Inline-Einstellungen erfolgen. Also, es ist sehr einfach an dieser Front.

public void ConfigureServices(IServiceCollection services)
{
   services.AddResponseCaching();

   //remaining services here
   ...
   //Add NCache services to the container
   services.SetNCacheSessionConfiguration ( 
	Configuration.GetSection("NCacheSettings"));

   services.AddNCacheDistributedCache();

   services.AddMvc();
}

Wenn ich jetzt hierher zurückkomme, erwarten wir, dass zwei Clients verbunden werden, weil die Response-Caching-Anwendung auch eine Verbindung herstellen würde NCache und als Ergebnis davon würden wir einige Elemente im Cache sehen.

Frage: Wie genau werden die Daten verschlüsselt und sicher aufbewahrt?

Lassen Sie mich dieses Beispiel für das Zwischenspeichern von Antworten zeigen, und dann zeige ich Ihnen die darin enthaltenen Sicherheitsverschlüsselungsfunktionen NCache. Wir haben also die Anwendung ausgeführt und wie Sie sehen können, haben wir einige Elemente hinzugefügt. Wenn ich dies einfach aktualisiere, werden die Werte von hier aus aktualisiert, und dieser Seitenausgabeinhalt wird darin gespeichert NCache Durch unser Response-Caching und wenn ich Ihnen die Cache-Schlüssel zeige, haben wir jetzt einige weitere Elemente im Cache. Also zwei Items zusätzlich zu den bereits vorhandenen Session-Items.

Nun, zurück zu kommen Sicherheitsverschlüsselung. Diese sind innen sehr umfangreich NCache. Wir haben Sicherheits- und Verschlüsselungsfunktionen. Es gibt viele Sicherheitsanbieter, aus denen Sie wählen können. Wir haben AES- und DES-Anbieter. Mehrere davon. Wir haben FIPS-konforme Verschlüsselungsanbieter und wir haben auch TLS 1.2 unterstützt. So ist auch die Transportebenensicherheit mit verfügbar NCache. Das deckt also Ihre Verschlüsselung ab. Wo Sie eine Ende-zu-Ende-Verschlüsselung zwischen Ihren Client- und Serverboxen haben können und dann aus Sicherheitsgründen wählen können, wer Cache-Administratoren sein könnte, wer Cache-Benutzer sein könnten, und wir haben Active Directory-basierten LDAP-basierten Verschlüsselungssicherheitsanbieter für Sie einstecken kann.

Wenn Sie also spezielle Fragen haben, können Sie uns eine E-Mail senden, und wir werden mit Ihnen zusammenarbeiten und Ihnen all diese Details zur Konfiguration mitteilen. Aber wir haben intern sehr umfangreiche Unterstützung NCache. Also, komm hierher zurück. Das deckt also unseren ASP ab.NET Core Antwort-Caching.

ASP.NET Core SignalR Backplane

Die nächste Funktion ist ASP.NET Core SignalR Backplane. Wenn Sie eine Webfarm verwenden, können Sie in diesem Fall verwenden NCache als Backplane dafür und im Vergleich zu herkömmlichen Backplanes, NCache ist viel schneller, sehr zuverlässig und auch sehr skalierbar.

Hier ist also das NuGet-Paket, das ich hinzugefügt habe. AspNetCore.SignalR.NCache das man suchen kann. Es ist bereits installiert. Alles, was Sie tun müssen, ist wieder ein Cache-Name über die App-Einstellungen und dann ist hier die Erweiterungsmethode. Wenn Sie also services.AddSignalR haben, haben wir eine Erweiterungsmethode, bei der es hinzugefügt wird NCache hat eine SignalR Backplane für ASP.NET Core um weitere Anwendungsbeispiele zu finden.

// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.Configure<NCacheConfiguration>(Configuration.GetSection("NCacheConfiguration"));
    services.AddSignalR().AddNCache(ncacheOptions =>
    {
        ncacheOptions.CacheName = Configuration["NCacheConfiguration:CacheName"];
        ncacheOptions.ApplicationID = Configuration["NCacheConfiguration:ApplicationID"];
        // Uncomment in case of cache security enabled.
        //ncacheOptions.UserID = Configuration["NCacheConfiguration:UserID"];
        //ncacheOptions.Password = Configuration["NCacheConfiguration:Password"];
    });
}

Ich werde es ganz schnell ausführen, weil es einige Zeit dauert. Ich denke, vieles läuft. Also werde ich dieses Beispiel ausführen. Das würde also eine Chat-Anwendung starten und sie würde hinter den Kulissen Pub/Sub-Messaging von verwenden NCache. Deshalb werde ich wirklich hierher zurückkommen und Ihnen auf der Serverseite einige Leistungsindikatoren zeigen, die es Ihnen ermöglichen würden, die Pub/Sub-Nachrichten speziell zu verwalten und zu überwachen, und SignalR verwendet Pub/ Sub-Messaging hinter den Kulissen. Also, lassen Sie mich einfach SignalR sagen, richtig. Also, und wenn Sie hier bemerken, haben wir hier einen Nachrichtenbereich. Wo wir die Größe des Nachrichtenspeichers, die Anzahl der Nachrichten, die pro Sekunde zugestellten, die pro Sekunde abgelaufenen, die veröffentlichten und die Anzahl der Themen sehen können.

Themen ermöglichen es Ihnen, Bedenken zu trennen. Mehrere Anwendungen verwenden NCache als ein SignalR Backplane Sie hätten mehrere Themen, die darin erstellt wurden NCache. Themen einer Nachricht ähnlicher Art können also einem separaten Thema zugeordnet werden. Beispielsweise können Sie ein Thema für Bestellungen erstellen. Sie können ein Thema für Nachrichtenkunden erstellen. Sie können also verschiedene Nachrichten in verschiedenen Themen haben und Abonnenten, die mit einem separaten Thema verbunden sind, erhalten nur die Nachrichten, die sich auf sie beziehen. Hier sehen Sie also bereits einige Aktivitäten, was bedeutet, dass meine Anwendung ausgeführt wird. Wenn ich also zum Server-Dashboard zurückkomme, haben wir jetzt drei Anwendungen ausgeführt. In den regulären Statistiken sehe ich nichts. Ich würde alles in den Messaging-Statistiken sehen. Sie können also die Anzahl der Nachrichten sehen.

Es gab also einige Nachrichten, die Speichergröße beträgt etwa 800 Bytes. Nachricht veröffentlicht und dann haben wir, glaube ich, andere Parameter zum Datum nicht da, weil wir noch kein Ablaufdatum haben.

Um auf meine Anwendung zurückzukommen, würde ich eine weitere Instanz davon ausführen. Also gut, ich habe zwei Bewerbungen. Hätte es inkognito ausführen sollen, aber Testnachricht, sobald diese gesendet wurde, wird sie auch hier gesendet. Testen Sie Nachricht 2 und Sie würden diese Nachricht auch auf der anderen Seite sehen, richtig, und wenn ich hierher zurückkomme, haben wir hier einige Aktivitäten im Gange.

Es verwendet also hinter den Kulissen Pub/Sub-Messaging und ermöglicht es Ihnen, eine Backplane zu erstellen. Also, SignalR selbst, der Anwendungsfall dafür, dass es auf die Push-Benachrichtigung statt auf die Benutzerabfrage Wert legt, die Sie Ihren Benutzern mit Inhalten übermitteln können. Bei der Webfarm gibt es jedoch eine Einschränkung, dass Sie Inhalte nur an die verbundenen Clients auf diesem Webserver übertragen können. Wenn Sie mehrere Webserver haben, benötigen Sie einen zentralen Körper und eine Backplane von ASP.NET und ASP.NET Core löst das auf.

So können Sie verwenden NCache als Backplane dafür. Es ist eine Kommunikationsplattform, an die alle Nachrichten weitergeleitet werden NCache, gesendet an NCache und dann NCache sendet es wiederum an alle Webserver, sendet es und diese Webserver sind schließlich in der Lage, diese Nachrichten an ihre Endbenutzer zu übertragen. Das macht die Gesamtarchitektur sehr schnell, weil die NCache ist im Speicher. Es ist superschnell, sehr skalierbar, sehr zuverlässig und hochverfügbar.

Okay. Ich denke also, dass wir an dieser Front gut sind. Irgendwelche Fragen? Ansonsten werde ich weitermachen und über den Aspekt des Daten-Caching sprechen. Wir verbringen also die letzten 10-15 Minuten mit dem Daten-Caching, einigen der Funktionen. Es gibt viele Funktionen an dieser Front. Also, ich würde schnell einige zeigen.

Also, zunächst einmal gibt es viele Möglichkeiten, die Sie verwenden können NCache für das Datenbank-Caching oder das App-Daten-Caching. Wo Sie Daten zwischenspeichern NCache & Sie speichern Fahrten in die Backend-Datenbank. Wenn Sie IDistributedCache bereits verwenden, obwohl dies sehr begrenzt ist, können Sie es anschließen NCache als Anbieter.

Ich habe hier eine Beispielanwendung. Wieder ist es sehr einfach. Sie müssen das NuGet-Paket hinzufügen. Es ist ASP.NET Core und NCache.Microsoft.Extensions.Caching.

public async Task<IActionResult> onPostResetCachedTime()
{
    var currentTimeUTC = DateTime.UtcNow.ToString();
    byte[] encodedCurrentTimeUTC = Encoding.UTF8.GetBytes(currentTimeUTC);
    var options = new DistributedCacheEntryOptions()
        .SetAbsoluteExpiration(TimeSpan.FromSeconds(20));
    _cache.Set("cachedTimeUTC", encodedCurrentTimeUTC, options);

    return RedirectToPage();
}

Das deckt also IDistributedCache ab, und dann benötigen Sie App-Einstellungen, in denen Sie den Namen des Caches und in startup.cs angeben, die Sie einstecken. services.AddNCacheDistributedCache gibt die Einstellungen über die Konfiguration an, oder Sie können Option XNUMX verwenden, bei der Sie Konfigurationen angeben, alle Einstellungen direkt über den Code.

public void ConfigureServices(IServiceCollection services)
    {
        // Reading NCacheSettings using appsettings.json
        services.AddNCacheDistributedCache(_config.GetSection("NCacheSettings"));

        services.AddMvc().SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_2_2);
    }

Und in der index.html.cs haben wir hier einige Methoden. Wo wir cache.GetAsync aufrufen.

public string CachedTimeUTC { get; set; }
public async Task OnGetAsync()
{
    CachedTimeUTC = "Cached Time Expired";
    var encodedCachedTimeUTC = await _cache.GetAsync("cachedTimeUTC");

    if(encodedCachedTimeUTC != null)
    {
        CachedTimeUTC = Encoding.UTF8.GetString(encodedCachedTimeUTC);
    }
}

Und eine Sache, die Sie beachten müssen, ist diese IDistributedCache-Schnittstelle. Wenn ich Ihnen beispielsweise GetAsync zeige, nimmt sie ein Byte-Array zurück. Sie erhalten also kein serialisiertes oder deserialisiertes Objekt. Sie müssen die Serialisierung und Deserialisierung selbst durchführen.

using System.Threading;
using System.Threading.Tasks;

namespace Microsoft.Extensions.Caching.Distributed
{
public interface IDistributedCache
{
    byte[] Get(string key);
    Task<byte[]> GetAsync(string key, CancellationToken token = default);
    void Refresh(string key);
    Task RefreshAsync(string key, CancellationToken token = default);
    void Remove(string key);
    Task RemoveAsync(string key, CancellationToken token = default);
    void Set(string key, byte[] value, DistributedCacheEntryOptions options);
    Task SetAsync(string key, byte[] value, DistributedCacheEntryOptions options, 
    CancellationToken token = default);
}
}

Was wir in diesem Beispiel getan haben, haben wir tatsächlich so gemacht, dass wir das Objekt vor dem Hinzufügen serialisieren und nach dem Abrufen deserialisieren, richtig. Also bekommen wir die Saite dadurch zurück.

public string CachedTimeUTC { get; set; }
public async Task OnGetAsync()
    {
        CachedTimeUTC = "Cached Time Expired";
        var encodedCachedTimeUTC = await _cache.GetAsync("cachedTimeUTC");

        if(encodedCachedTimeUTC != null)
        {
            CachedTimeUTC = Encoding.UTF8.GetString(encodedCachedTimeUTC);
        }
    }

Das ist etwas, was wir ausgiebig getan haben, und das ist es, was Sie tun müssen. Mit NCache direkt als App-Daten-Caching-Plattform verwendet, müssen Sie all dies nicht tun. NCache würde Ihre Objekte automatisch serialisieren und deserialisieren. Sie müssen sie nur als serialisierbar markieren.

Also werde ich dieses Beispiel ganz schnell ausführen und das sollte es mir ermöglichen, auch die IDistributedCache-Schnittstelle zu demonstrieren, und während dies ausgeführt wird, möchte ich auch bauen, also ist dies unsere IDistributedCache-Schnittstelle und dies die zweite Option hier, die ich hier zeige, ist die direkte NCache APIs. Hier sind unsere APIs.

/*Cache Connection*/
Cache cache = NCache.InitializeCache("myCache");
cache.Dispose();

/*Fetching Data*/
Employee employee = cache.Get<Employee>("Employee:1000");
bool isPresent = cache.Contains("Employee:1000");

/*Writing Data*/
cache.Add("Employee:1000", employee);
cache.AddAsync("Employee:1000", employee);

cache.Insert("Employee:1000", employee);
cache.InsertAsync("Employee:1000", employee);

Employee employee = (Employee) cache.Remove("Employee:1000");
cache.RemoveAsync("Employee:1000");

Alternativ empfehlen wir Ihnen dringend, mehr Kontrolle zu erhalten, wenn Sie alles direkt verwalten NCache API-Aufrufe. Du verbindest dich mit NCache Verwenden Sie in den aktuellen Versionen Cache initialisieren oder Cache abrufen, und sagen Sie dann cache.Get, um Elemente abzurufen cache.Add , um Elemente hinzuzufügen. Add Async ist ebenfalls verfügbar Insert und Insert Async ist ebenfalls verfügbar und dann können Sie cache.Remove aufrufen. Das ist also der zweite Ansatz, den ich zeigen werde, sobald dieses Beispiel ausgeführt wird und IDistributedCache unterstützt wird, aber unsere direkten APIs sind im Vergleich umfangreicher und funktionsreicher.

Frage: Können wir verwenden? NCache API zusammen mit IDistributedCache und woher können wir die Beispiele bekommen?

Also, zuallererst ja, Sie können IDistributedCache verwenden. Sie müssen IDistributedCache bereits verwenden. Sie können sich also anschließen NCache als Quelle dafür. Das könnte also ein Ausgangspunkt sein und Sie können dann zusätzlich unsere direkten APIs in derselben Anwendung verwenden. Also, ja, das kannst du tun. Wir beschränken Sie nicht auf die Verwendung des einen oder anderen. All diese Anwendungsfälle, die wir besprochen haben, Session Caching, Response Caching, SignalR Backplane, IDistributedCache oder direkt NCache API-Aufrufe. Fünf dieser Funktionen können Sie auch alle in einer einzigen Anwendung verwenden. Das ist also das Schöne an NCache wo Sie all diese Anwendungsfälle kombinieren können.

Beispielanwendungen, alle diese Beispiele sind, sie werden mit installiert NCache, Rechts. Wir verwenden hier also nichts Benutzerdefiniertes. All dies ist also in der Programmdatei sample verfügbar, NCache Proben. Diese werden auch auf unserer Website veröffentlicht.

Dieses Beispiel ist also gelaufen. Wenn ich also die Cache-Zeit zurücksetze, würde es das tun, und wenn ich schnell hierher zurückkomme, würde ich die Cache-Schlüssel zeigen und jetzt würden Sie einige weitere Cache-Schlüssel sehen. Ich glaube, einige Artikel sind abgelaufen, aber Sie sehen die Cache-Zeit UTC. Einige Antwort-Caching-Objekte müssen abgelaufen sein.

So verwenden Sie also die IDistributedCache-Schnittstelle mit NCache.

Jetzt werde ich das Direkte präsentieren NCache API-Aufrufe, die wir sehr empfehlen. Das ist etwas, was Sie auch tun können. Dafür können Sie also die verwenden Alachisoft.NCache.SDK NuGet-Paket. Das ist unser komplettes SDK, das die gesamten clientseitigen Ressourcen einbringt, und alle Funktionen können mit diesem SDK auf der Clientseite verfügbar gemacht werden, und auf dieser Grundlage kann ich sagen, dass diese Namensräume enthalten sind Alachisoft.NCache.Klient und Sie können auch einschließen Alachisoft.NCache.Laufzeit weil es einige erweiterte Funktionen gibt, die Sie damit verwenden können.

using Alachisoft.NCache.Runtime;
using Alachisoft.NCache.Sample.Data;
using Alachisoft.NCache.Client;
using System;
using System.Configuration;
using Alachisoft.NCache.Runtime.Caching;

namespace Alachisoft.NCache.Samples
{
    public class BasicOperations
    {
        private static ICache _cache;
    }
}
...

ICache-Schnittstelle. Dies ist unsere eigene Schnittstelle im Gegensatz zu IDistributedCache, richtig. Wir haben also viele Funktionen, wie Sie im Vergleich sehen können, und innerhalb dieser haben wir auch mehrere Funktionen. Das sind also einige Objekte auf ICache.

Sie können also den Cache initialisieren. Die Initialisierung wird durchgeführt NCache.Klient. CacheManager.GetCache, so wird man also damit verbunden. Sie erhalten einen Cache-Handle und mit diesem Cache-Handle können Sie einen zeitbasierten Ablauf einrichten. Geben Sie das Objekt an, das in diesem Fall Kunde ist, AddObjectToCache und wir bekommen einen Kunden. Dann sagen Sie cache.Add, dass ein Schlüsselwertelement hinzugefügt wird. Das Kundenobjekt würde also automatisch serialisiert, während Sie es in den Cache einfügen würden, und dann erfolgt der Abruf über cache.Get, aktualisieren Sie über cache.Insert, wo Sie einige Werte ändern können. Ändern Sie die Ablaufzeit und dann können Sie cache.Remove aufrufen, um auch Daten zu entfernen.

Also, in diesem Beispiel, wenn schnell. Gut. Der Cache wird also aus den App-Einstellungen abgerufen. Wenn ich diesen Cache als ASP-Core-Cache bezeichne, wird derselbe Cache auch für das Daten-Caching verwendet, und Sie haben bereits gesehen, dass ich denselben Cache in verschiedenen Anwendungen verwendet habe, aber wenn es sich um eine große Anwendung handelt all diese Features in Verbindung miteinander, in Kombination miteinander, das wird auch unterstützt.

Während dies ausgeführt wird, gibt es also viele Funktionen. Ich zeige nur ein oder zwei in den Beispielen, da dies nur grundlegende Operationen sind und dies einige Daten im Cache hinzufügen würde. Es kann sein, dass es zu keinem Zeitpunkt aufhört, da bin ich mir nicht sicher, aber mal sehen. In der Zwischenzeit, wenn ich Ihnen zeige, dass ein Client verbunden ist. Es hat einige Operationen durchgeführt, richtig. Hoffen wir es. Lassen Sie mich irgendwo einen Haltepunkt setzen und es noch einmal ausführen.

Was es wirklich tat, war, dass es tatsächlich den Cache initialisierte, ein Objekt hinzufügte, es abholte, es aktualisierte, es wieder abholte, es dann entfernte und dann den Cache entsorgte. Also, vor dispose habe ich einen Haltepunkt gesetzt, also können Sie jetzt hoffentlich sehen, dass initialisiert, hinzugefügt, abgerufen, Details aktualisiert, aktualisiert im Cache sind. Alle diese Methoden wurden also ausgeführt.

So einfach ist es also, dieses Beispiel auszuführen. Alles, was Sie brauchen, ist das NuGet-Paket und die einzubindenden Namespaces, und dann spielen Sie mit verschiedenen APIs herum, die ich hier zeigen werde.

Viele Funktionen sind verfügbar. Ich werde die letzten 5 - 6 Minuten mit verschiedenen Funktionen verbringen, die als Teil unserer Direktübertragung verfügbar sind NCache APIs. Sie können also einen zeitbasierten Ablauf verwenden. Absolutes und gleitendes Verfallsdatum sind verfügbar. Absolut ist, wenn Sie im Voraus eine Zeit angeben und die Daten nach Ablauf dieser Zeit entfernt werden. Sliding ist, wenn Sie diese Daten weiterhin verwenden, sagen wir, Sie haben einen gleitenden Ablauf von 10 Minuten, wenn Sie 10 Minuten lang nicht auf dieses Element zugreifen, wird es erst dann entfernt. Andernfalls würde es im Cache bleiben, wenn Sie dieses Objekt weiterhin verwenden.

Sie können Ihren Cache mit der Datenbank synchronisieren. Jede Änderung im Inhalt des zwischengespeicherten Elements, richtig. Zum Beispiel das zwischengespeicherte Element jede Änderung im Datenbankeintrag. Wenn Sie Elemente zwischengespeichert haben, die aus der Datenbank gehören, würde jede Änderung in der Datenbank das Element aus dem Cache ungültig machen, und wir haben dafür eine SQL-Abhängigkeit, die ereignisbasiert ist. Wir haben DB-basierte Abhängigkeit, DB-Polling-Abhängigkeit, die polling-basiert ist. Es sammelt Änderungen und wenn es feststellt, dass einige Datensätze in der Datenbank geändert wurden, entfernt es die entsprechenden Elemente aus dem Cache. .NET CLR gespeicherte Prozeduren, wo Sie direkt machen können NCache API-Aufrufe direkt von den Datenbankservern. Sie können Ihren Cache auch mit nicht-relationalen Datenbanken synchronisieren. Dateiabhängigkeiten verfügbar. Sie können Cache-Elemente von Dateien abhängig machen. Oder es könnte auch eine benutzerdefinierte Abhängigkeit sein, mit der Sie ein Coderegister ausführen NCache und das würde bestimmen, ob dieses Element aus dem Cache abgelaufen sein muss. Basierend auf Ihrer Geschäftslogik können Sie also Elemente aus dem Cache verfallen lassen. Wir haben eine Schlüsselbasisabhängigkeit. Damit können Sie Beziehungen zwischen zwischengespeicherten Elementen handhaben. So können Eins-zu-Eins-, Eins-zu-Viele- und Viele-zu-Viele-Beziehungen intern verwaltet werden NCache.

Serverseitige Unterstützung, Codeunterstützung ist sehr umfangreich. Sie können Cache-Aside-Muster oder Read-Through- und Write-Through-Muster verwenden, bei denen Sie aus dem Cache in den Cache lesen, und wenn sich keine Daten im Cache befinden, können Sie den Cache durch Ausführen Ihres Anbieters lesen. Es ist eine Schnittstelle, die Sie implementieren und bei uns registrieren, und Sie können den Cache durchlesen und dieses Element abrufen oder es aus der Backend-Datenbank löschen.

Und Write-Through ist das Gegenteil davon, wo Sie den Cache aktualisieren und dann auch die Backend-Datenbank automatisch aktualisieren können, indem Sie Ihren Write-Through-Handler aufrufen, eine Schnittstelle, die Sie implementieren und registrieren, und Write-Behind würde die Backend-Datenbank asynchron aktualisieren. Das ist im Vergleich sehr schnell, wo Sie nicht einmal für Schreibvorgänge Ihr Cache-Element nur im Cache aktualisieren müssen und Ihre Anwendung zurückkehrt und hinter den Kulissen dann der Cache die Back-End-Datenbanken aktualisieren würde.

Gruppen, Untergruppen sind verfügbar. Sie können darin logische Sammlungen erstellen NCache. Tags werden unterstützt. Sie können Schlüsselwörter zu den Artikeln hinzufügen und Sie können Artikel basierend auf ihrem entsprechenden Tag abrufen, entfernen oder abrufen oder sogar herumspielen oder suchen.

SQL-ähnliche Suchen sind verfügbar. SQL- und LINQ-Suchen werden unterstützt. Sie können Artikel anhand ihrer Attribute suchen. Sie können ein Suchkriterium ausführen, das so etwas wie „Produkte auswählen“ lautet, wobei „Produkt“ der Objekttyp ist, und „Produkte auswählen“, bei denen „Produktpreis“ größer als 10 und „Produktpreis“ kleiner als 100 ist. Also basierend auf Ihren angegebenen Kriterien NCache würde die Ergebnismenge in Ihren Anwendungen formulieren.

Außerdem werden LINQ-Abfragen unterstützt. Diese sind parallel. Dabei wird die Datenindizierung unterstützt. Das braucht man unbedingt, das macht das Suchen sehr schnell aus NCache.

Pub/Sub-Nachrichten und -Ereignisse

Pub/Sub-Nachrichten und -Ereignisse sind eine separate Funktion. Wir haben eine asynchrone ereignisgesteuerte Pub/Sub-Messaging-Plattform. Wir haben eine kriterienbasierte kontinuierliche Abfrage, bei der Sie einen Datensatz abbilden und Ereignisse aus diesem Datensatz abrufen können. Beispielsweise können Sie alle Produkte abbilden, deren Produktpreise unter 100 liegen. Das könnte also Ihr Datensatz sein. Bei jeder Änderung in diesem Datensatz würden Sie benachrichtigt.

Schlüsselbasisereignisse sind verfügbar. So können Sie benachrichtigt werden, wenn ein Element aktualisiert oder entfernt wird, oder es könnte sich um eine Cache-Ebene handeln, auf der alle Elemente überwacht werden.

Dynamischer Cache-Cluster

Abschließend einige Details zu NCache Clusterung. Es basiert auf dem dynamischen Cache-Clustering-Protokoll. NCache ermöglicht es Ihnen, Server im Handumdrehen hinzuzufügen oder zu entfernen. Es gibt also keinen Single Point of Failure. Falls ein Server ausfällt, wird dies innerhalb des Protokolls verwaltet. Wenn Sie weitere Server hinzufügen, beginnt es automatisch mit dem neu hinzugefügten Server. Wenn ein Server ausfällt, haben Sie selbst in diesem Fall keine Ausfallzeit, und es gibt keinen Single Point of Failure, hauptsächlich weil mehrere Server diesen Cache hosten.

Das Hinzufügen und Entfernen von Servern ist für Ihre Anwendungen nahtlos. Gibt Ihnen 100 % Betriebszeit, ein hochverfügbares Cache-Szenario und dann haben wir bereits Topologien abgedeckt.

Wir haben einige Client-Cache. WAN-Replikation Merkmale. Sie können Standort-zu-Standort-Replikation zwischen Aktiv-Aktiv- oder Aktiv-Passiv-Standorten haben. Das ist auch gelungen.

WAN-Replikation des verteilten Caches

Sie wissen also, dass die Liste weitergeht. Ich denke, wir haben viele Details behandelt, und ich wollte Ihnen einen schnellen Überblick darüber geben, wie Sie es tatsächlich nutzen können NCache im ASP.NET Core. Damit nähern wir uns bereits dem Ende dieser Präsentation. Ich denke, eine Stunde Markierung.

Ich denke, lassen Sie uns dies an dieser Stelle abschließen. Bitte lassen Sie mich wissen, wenn Sie bisher Fragen haben? Ansonsten übergebe ich es Zack und dann kann er es von dort aus übernehmen. Irgendwelche Fragen? Wir lassen den Boden etwa eine Minute lang offen. Wenn Sie Fragen haben oder noch darüber nachdenken, können Sie diese gerne wegwerfen.

Und wo wir gerade dabei sind, wir haben so ziemlich alle diese Funktionen behandelt, die Sie sehen. ASP.NET Core Sitzungen, Antwort-Caching, SignalR Backplane, IDistributedCache, Daten-Caching und direkt NCache API-Aufrufe und wir haben sogar Beispielanwendungen für Pub/Sub-Messaging. Wenn Sie sich separat für diesen Abschnitt interessieren, können Sie auch eine separate Beispielanwendung erhalten.

Frage: Wird diese Präsentation später verfügbar sein?

Ja, das wird es. Wir können nicht nur eine Aufzeichnung des Webinars erhalten, sondern auch die Folien zur Verfügung stellen, wenn Sie diese herunterladen und verwenden möchten, und Sie erhalten eine E-Mail mit einem Link zum aufgezeichneten Webinar, sobald es fertig ist. Sie können also jederzeit auf unsere Website kommen, sobald sie live ist, und unter aufgezeichnete Webinare finden Sie sie.

Frage: Was ist der Unterschied zwischen IDistributedCache und NCache ASP.NET Core Session-Store-Anbieter?

Okay, ich glaube, die Frage konzentriert sich mehr auf den Unterschied der Sitzungsnutzung durch IDistributedCache und die Sitzungsnutzung durch unseren Cache-Anbieter. Auf hoher Ebene ist IDistributedCache also in seiner Funktionalität eingeschränkt. NCache Anbieter gibt Ihnen mehr Kontrolle. Zunächst einmal können Sie die Sitzungssperre verwenden. IDistributedCache Session ist ein nicht sperrender Speicher. Sie können Single-Site- und Multi-Site-Sitzungen verwenden. Das ist eine Besonderheit im Inneren NCache die in IDistributedCache nicht verfügbar ist. Obwohl, NCache unterstützt IDistributedCache Session Provider unverändert. Es bietet Ihnen viele Vorteile zusätzlich zu IDistributedCache, aber wenn wir IDistributedCache-Sitzungen mit vergleichen NCache und du weißt, NCache Sitzungsspeicheranbieter mit NCache, das ist wo NCache Anbieter hat einen klaren Vorteil. Dann gibt es viele Funktionen wie das Teilen von Sitzungen zwischen verschiedenen Anwendungen. Es gibt ein Sitzungs-App-ID-Attribut, das Sie angeben können. Ihre Ausnahmen können im Ereignisprotokoll protokolliert werden, Cache-Protokolle können erstellt werden, Client-Protokolle können erstellt werden. Es gibt also eine riesige Liste von Funktionen, die sich zwischen diesen beiden unterscheiden.

Es wird daher dringend empfohlen, wenn Sie Sitzungs-Caching mit verwenden NCache, daher würde ich persönlich empfehlen, unseren Session-Store-Anbieter im Vergleich zu IDistributedCache Session mit zu überprüfen NCache denn Sie profitieren von vielen Vorteilen.

Frage: Wie kann das Gruppieren von Daten diesen Datenabruf erleichtern?

Recht. Sie hängen also eine Gruppe an mehrere Elemente an, und dann gibt es gruppenbasierte APIs, bei denen Sie sagen, dass Sie Gruppendaten abrufen, und Sie alle diese Elemente auf einmal erhalten. Sie müssen die Schlüssel dieser einzelnen Objekte also nicht separat angeben. So können mit einem API-Aufruf alle Gruppendaten abgerufen werden. Sie können Daten in einem API-Aufruf entfernen. So ist der Abruf- und Aktualisierungsprozess im Vergleich einfacher.

 
© Copyright Alachisoft 2002 - Alle Rechte vorbehalten NCache ist eine eingetragene Marke der Diyatech Corp.