Fünf ASP.NET Performance Booster

Aufgezeichnetes Webinar
Von Ron Hussain und Nick Zulfiqar

Erfahren Sie, wie Sie die Leistung und Skalierbarkeit von ASP.NET mit einem verteilten .NET-Cache steigern können. Sehen Sie sich dieses Webinar an, um mehr über die fünf Möglichkeiten zur Steigerung der ASP.NET-Leistung für die Skalierbarkeit in ASP.NET-Anwendungen und die Verwendung eines verteilten In-Memory-Cache zu erfahren, um sie effektiv aufzulösen.

Begleitet von unserem Senior Solutions Architect und Regional Sales Director, besuchen Sie uns bitte, um mehr über Folgendes zu erfahren:

  • ASP.NET-Anwendungsdaten-Caching
  • Zwischenspeichern des ASP.NET-Sitzungsstatus
  • ASP.NET SignalR Backplane mit verteiltem Cache
  • ASP.NET View State Caching
  • ASP.NET-Ausgabecaching

Heute sprechen wir über 5 Möglichkeiten, die Leistung und Skalierbarkeit Ihrer ASP.NET-Anwendung zu steigern. Es ist ein sehr heißes Thema, ich würde sagen, es ist etwas, das sehr gefragt ist. Also, wir freuen uns, dies für Sie zu bringen. Ron wird gleich darüber sprechen, und wenn Sie während dieser Präsentation Fragen haben, können Sie diese gerne in das Video eingeben, und ich kann Ron darauf aufmerksam machen.

Also, Ron, was fängst du an? Danke Nick. Hallo zusammen, mein Name ist Ron und ich werde Ihr Moderator für das heutige Webinar sein, und wie Nick vorgeschlagen hat, lautet das Thema, das wir heute ausgewählt haben, fünf ASP.NET-Leistungssteigerungen. Wir werden also fünf verschiedene Funktionen durchgehen. Zunächst werde ich über fünf verschiedene Probleme sprechen, die Sie normalerweise in einer ASP.NET-Webanwendung sehen würden. Dies sind alltägliche Probleme, die Ihre Anwendungen tatsächlich verlangsamen, deren Leistungsabfall, dann ist die Skalierbarkeit ein weiterer Weg, ein weiterer Aspekt Wir werden über diese Engpässe sprechen und dann werde ich über verschiedene Lösungen mit Hilfe eines verteilten Caching-Systems sprechen. Wie können Sie diese Probleme in Ihren ASP.NET-Anwendungen lösen? Das haben wir also für heute zusammengestellt, ich werde verschiedene Funktionen behandeln, ich werde Beispielanwendungen haben, ich werde Ihnen alles in Aktion zeigen, wie Sie dies einrichten und damit beginnen. Es wird also ein ziemlich interaktives, praktisches Webinar, und wie Nick bereits erwähnt hat, können Sie sich gerne melden, wenn Sie Fragen haben, und ich werde all diese Fragen sehr gerne für Sie beantworten. Okay vorausgesetzt, dass alles gut aussieht, werde ich damit anfangen.

ASP.NET ist beliebt für Webanwendungen mit hohem Datenverkehr

Zunächst werde ich also allgemein über die ASP.NET-Plattform sprechen. ASP.NET ist eine sehr beliebte Plattform für Webanwendungen. Wir sehen viele Webbereitstellungen und es wird immer beliebter. Das Schöne an der ASP.NET-Plattform ist, dass sie auf dem Nutzungsmuster basiert und sich ziemlich gut skalieren lässt. Sie können Tausende gleichzeitiger Benutzer und die damit verbundenen Anforderungen verarbeiten, ohne etwas in der Anwendungsarchitektur ändern zu müssen. Sie können eine Webfarm erstellen, Sie könnten einen Webgarten erstellen, es gibt Ihnen viele Skalierbarkeitsoptionen, Sie können einen Load Balancer vorschalten und dann können Sie Anfragen zwischen verschiedenen Webservern weiterleiten und Sie können lineare Skalierbarkeit, horizontale Skalierbarkeit erreichen aus der ASP.NET-Webfarm.

Ein Load Balancer kann abhängig von Ihrer Architektur über einen permanenten Lastenausgleich oder einen gleichmäßigen Lastenausgleich verfügen, abhängig von der zustandsbehafteten Natur Ihrer Webserver oder App-Server, und Sie können dann nach Bedarf skalieren.

Webfarm-Bereitstellung

Dies ist also eine typische Webfarmbereitstellung für ASP.NET-Anwendungen, Sie haben eine Anzahl von N Clients, die den Load Balancer durchlaufen, um Webserver innerhalb einer Webfarm einzurichten, und dann haben Sie ASP.NET-Sitzungsspeicher, das ist eine Art von Daten die Sie möglicherweise in Ihren ASP.NET-Webanwendungen sehen. Dann werden es Datenbankserver, relationale Datenbanken oder NoSQL databaseEs kann sein, dass Sie mit vielen Daten hin und her zu tun haben und es sich dann um jedes andere Mainframe-Dateisystem des Back-End-Datensystems handeln kann, mit dem Ihre Anwendungen interagieren. Das ist also ziemlich beliebt, ziemlich skalierbar, ziemlich schnell und viele aktive Bereitstellungen verwenden diese Plattform.

Das Problem: Skalierbarkeitsengpässe

Lassen Sie uns also über den Skalierbarkeitsengpass in ASP.NET sprechen. Wo genau ist das Problem? Es ist etwas, das das Skalierbarkeitsproblem sehr gut skaliert, und lassen Sie uns schnell definieren, was Skalierbarkeit ist? Skalierbarkeit ist eine Fähigkeit innerhalb der Anwendungsarchitektur oder innerhalb der Umgebung, in der Ihre Anwendung bereitgestellt wird. Es ist diese Fähigkeit, mit der Sie die Anzahl der Anfragen pro Sekunde oder gegebene Anfragen, gleichzeitige Anfragen erhöhen können, ohne die Leistung zu beeinträchtigen. Wenn Sie unter sagen wir fünf Benutzern eine bestimmte Latenzzeit haben. Wie wäre es, wenn Sie diese Latenz beibehalten? Sie verringern die Leistung nicht und es ist in Ordnung, die Leistung nicht zu verbessern, aber zumindest halten Sie die Leistung unter 5000 Benutzern oder 500,000 Benutzern aufrecht. Diese Fähigkeit selbst wird als Skalierbarkeit bezeichnet, bei der Sie den maximalen Durchsatz aus dem System herausholen, es werden immer mehr Anforderungslasten gehandhabt und dann wächst Ihre Latenz nicht, wenn die Benutzerlasten wachsen. Es ist also im Wesentlichen Leistung unter extremer Belastung oder extreme Leistung unter extremer Belastung. Diese Fähigkeit wird also als Skalierbarkeit bezeichnet.

Nun, typischerweise ASP.NET-Anwendungen, obwohl die Webfarm sehr skalierbar ist, würden Sie jetzt die Skalierbarkeitsprobleme innerhalb der Webfarm verursachen, aber sie können vor allem aufgrund von Back-End-Datenquellen zu einer Verlangsamung unter Spitzenlasten führen. Wenn Ihre Anwendung also langsamer wird, sie aufgrund einer enormen Last verschluckt wird, dann ist diese Anwendung ein Kandidat für Skalierbarkeit, sie muss eine skalierbare Architektur in sich haben. Warum die Anwendung Ihre Welt fühlen würde oder Sie Situationen wie diese sehen würden, in denen Anwendungen unter Spitzenlast langsamer werden, könnte es unterschiedliche Datenspeicher-Engpässe oder einige Engpässe innerhalb der Anwendung geben. Von diesem Punkt an werden wir also über fünf verschiedene Engpässe innerhalb einer ASP.NET-Anwendung sprechen, die Ihre Skalierbarkeit einschränken, die Sie beim Aufskalieren einschränken.

Zwei Engpässe bei der Datenspeicherung

In Ordnung. Zunächst einmal haben wir also zwei Engpässe bei der Datenspeicherung.

Datenbank kann nicht skaliert werden

Wir haben eine Anwendungsdatenbank, die normalerweise nicht skaliert werden kann, Sie hätten eine relationale Datenbank in Form von SQL Server, Oracle oder einer anderen gängigen relationalen Datenquelle. Es ist sehr gut für die Speicherung, aber nicht sehr gut, wenn es darum geht, eine große Menge an Transaktionslast zu bewältigen. Es neigt dazu, sich zu verschlucken, und in einigen Fällen gibt es tatsächlich Zeitüberschreitungsfehler. Also, oder zumindest verlangsamt es Ihre Leistung, Sie können keine weiteren Datenbankserver im laufenden Betrieb hinzufügen, also wird es eine einzige Quelle sein. Es ist in einigen Fällen auch ein Single Point of Failure, wenn Sie keine Replikation haben, und das Wichtigste ist, dass das dringende Problem hier ist, dass es nicht sehr schnell ist, es ist langsam unter normalen Szenarien und dann unter Spitzenlast und es verschlimmert die Situation wo Es ist nicht in der Lage, die erhöhte Last aufzunehmen, und es verlangsamt die Dinge weiter. Das ist also unser erster Engpass.

ASP.NET-Sitzungszustandsspeicherung

Der zweite Engpass betrifft die Speicherung des ASP.NET-Sitzungszustands, jetzt ist der Sitzungszustand eine sehr wichtige Art von Daten. Es ist etwas, das Benutzerinformationen enthält, es könnte beispielsweise eine E-Commerce-Anwendung geben, die Benutzerinformationen oder den Einkaufswagen verwaltet, es könnte ein Buchungssystem sein, es könnte ein Ticketsystem sein, es könnte Ihr Finanzsystem sein. Es könnte sich also um ein beliebiges Frontsystem handeln, bei dem sich Benutzer anmelden und ihre sehr wichtigen Daten in diesem Sitzungsobjekt haben.

Nun, dies sind die drei Modi, die die ASP.NET-Plattform bietet. Wir haben InProc, wo alles im Arbeitsprozess gespeichert wird. Alles befindet sich also im Anwendungsprozess, sodass Ihre Arbeitsprozesse nicht zustandslos sind, das HTTP-Protokoll selbst ist zustandslos, aber in diesem Fall würden Ihre Arbeitsprozesse alle Benutzerdaten selbst hosten. Dann haben wir StateServer, diese zweite Option, und dann haben wir SQL Server. Sprechen wir also über diese herkömmlichen Speicheroptionen für den Sitzungszustand und sprechen wir über ihre Engpässe.

Erstens ist InProc schnell, weil es sich im Speicher befindet, es gibt keine Serialisierungs-Deserialisierung, aber auf der anderen Seite können Sie zunächst einmal kein Web-Garten-Szenario handhaben. Auf einem Webserver hätten Sie nur einen einzigen Arbeitsprozess für eine bestimmte Anwendung, da dort jetzt Ihre Sitzungsdaten vorhanden sind, wenn die nächste Anfrage an einen anderen Arbeitsprozess geht, Sie diese Sitzungsdaten nicht mehr haben, es muss sich um denselben Arbeitsprozess handeln und Aus diesem Grund schränkt es Sie ein, es ist technisch nicht möglich, Web Garden mit InProc-Sitzungsverwaltung zu betreiben, also ist das hier ein einschränkender Faktor.

Zweitens muss das Sticky-Session-Bit auf dem Load Balancer aktiviert werden. Zunächst einmal haben Sie also Ihre Leistung oder Skalierbarkeit oder Ihre Ressourcen auf dem Webserver eingeschränkt, indem Sie nur einen einzigen Prozess für eine Anwendung haben. Zweitens, Ihre Webserver, auf denen die ursprüngliche Anfrage bedient wurde, nachfolgende Anfragen würden immer an denselben Server gehen. Das ist alles, was Sticky Session Load Balancing funktioniert, es erledigt die Arbeit, aber das Hauptproblem dabei ist, dass es sein könnte, dass ein Webserver viele Benutzer aktiv hat, aber andere Webserver im Leerlauf sitzen, weil diese Benutzer bereits abgemeldet wurden und Da die Benutzer von Natur aus klebrig sein werden, würden sie niemals zu diesem kostenlosen Server gehen, sie würden immer zu demselben Server gehen, auf dem sie mit den vorhandenen Daten gehen müssen. Das ist also ein weiteres Problem, das Sie haben müssen Sticky Session Load Balancing mit InProc, und am wichtigsten, wenn Ihr Arbeitsprozess wiederverwendet wird und wir aufgrund unserer Erfahrung gesehen haben, dass ASP.NET-Arbeitsprozesse ziemlich oft wiederverwendet werden, würden Sie alles verlieren die Daten richtig, wenn es sich um eine wartungsbezogene Aufgabe handelt, wenn der Server heruntergefahren werden muss, müssen Sie einen Webserver herunterfahren, einen anderen Webserver hochfahren, als Folge davon verlieren Sie alle Daten. Das fasst also alle Probleme zusammen, alle Engpässe, die Sie bei der InProc-Sitzungsverwaltung mit einem ASP.NET sehen würden. Es ist also eindeutig keine Option und es ist auch nicht sehr skalierbar. Sie haben einen Server, bei dem Sie die Kapazität dieses Servers erreichen, und mit Sticky ist ein Lastausgleich nicht wirklich hilfreich.

Die zweite Option ist StateServer, es ist etwas besser als InProc, weil es Daten aus Ihrem Anwendungsprozess innerhalb eines Zustandsdienstes entnimmt, es könnte eine Remote-Box oder einer Ihrer Webserver sein, es liegt ganz bei Ihnen, aber das Problem dabei ist, dass es nicht so ist skalierbar, es handelt sich um eine einzige Quelle, Sie können auf diesem Server hochskalieren, aber horizontales Hochskalieren ist keine Option. Es wird immer ein einzelner Server sein, ein Dienst, der alle Ihre Sitzungsdaten hostet und der auch die gesamte Anforderungslast verwaltet. Wenn Ihre Anforderungslast wächst, gibt es keine Optionen zum Hinzufügen weiterer Ressourcen. Es wird also im Vergleich nicht skaliert, schließlich kann Ihr staatlicher Dienst zum Beispiel ersticken, wenn Sie Hunderte und Tausende von Benutzern haben und ihre zugehörige Anfrage Millionen von Anfragen pro Sekunde oder pro Tag anfordert, oder innerhalb von Millionen, was eine ziemlich schwere Last ist . Auf dieser Grundlage würde StateServer also nicht skalieren und es wäre nicht in der Lage, mit steigender Last fertig zu werden, und dann ist es auch ein Single Point to Failure. Wenn StateServer selbst ausfällt, verlieren Sie alle Ihre Sitzungsdaten, und Sitzungsdaten sind eine sehr wichtige Art von Daten, die Sie nicht möchten, dass Ihre Sitzungen verloren gehen, während Ihr Benutzer etwas kauft oder eine Entscheidung trifft, die sich auswirken wird das Geschäft im Gegenzug.

Die dritte Option ist SQL Server. SQL Server ist wieder ein Out-of-Process-Session-Management, aber auch hier ist es langsam, nicht skalierbar, Sie können keine weiteren SQL-Server hinzufügen und es ist nicht dazu gedacht, nur Transaktionsdaten zu verarbeiten, sodass Sie am Ende das gleiche Problem haben, das wir im Rahmen unserer besprochen haben Anwendungsdatenbank bleibt dieses Problem beim Daten-Caching und beim Session-Caching gleich. Der Sitzungsstatus wird also nicht mit den Standardoptionen der ASP.NET-Plattform optimiert, und dies liegt hauptsächlich an den Datenquellen, die InProc, StateServer und SQL Server bietet.

Ich hoffe, dies hat einige grundlegende Details um die Engpässe herum aufgebaut, und natürlich werden wir über die Lösung sprechen, wir sprechen über verteiltes Caching und seine Funktionen im Vergleich und wir werden darüber sprechen, wie man sich um diese Probleme nacheinander kümmert , also möchte ich zuerst alle Probleme auflisten und dann werden wir nacheinander über Lösungen sprechen. Dieses Diagramm veranschaulicht dasselbe.

Zwei-Datenspeicher-Engpässe

Wir haben eine Datenspeicher-Engpassdatenbank und dann haben wir ASP.NET-Sitzungsspeicher oder InProc oder Datenbanken als Sitzungsmanager, und das ist auch eindeutig ein Engpass, wo wir in den meisten Fällen einzelne Quellen haben, sie sind nicht skalierbar, sie sind es nicht sehr zuverlässig und dann gibt es im Allgemeinen langsam.

ASP.NET View State Engpass

Jetzt ist der dritte wichtige Engpass ASP.NET view state. Für ASP.NET-Webfarmen gibt es einen Ansichtsstatus. Wer nun wissen möchte, was der Ansichtsstatus ist? Ich bin mir ziemlich sicher, dass es jeder weiß, aber der Ansichtsstatus ist eine clientseitige Statusverwaltung, es ist ein Paket, es ist ein Status Ihrer Kontroll-Widgets, die Sie in Ihren Webfarmen haben, es wird auf der Serverseite erstellt und wird Teil von Ihnen Das Antwortpaket geht zurück an den Browser, wo es gespeichert ist, es wird nie wirklich auf der Browserseite verwendet und es wird an den Server zurückgebracht, wenn Sie als Teil des verteilten Anforderungspakets auf dieser Seite zurücksenden. Es wird also mit den Anforderungs- und Antwortpaketen gebündelt, es geht zurück zum Browser, wird dort nie wirklich verwendet, und ein dringendes Problem mit dem Anzeigestatus ist, dass es im Allgemeinen sehr schwer ist. Es ist Hunderte von Kilobyte groß und denken Sie an das Szenario, in dem Sie eine riesige Menge an Transaktionslast haben, wir haben Millionen von Transaktionen und dann hat jede Transaktion ein View-State-Paketbündel oder ein Anforderungsantwortpaket für die ASP.NET-Webanwendung Ansichtsstatusteil davon und wenn Sie Hunderte von Kilobytes Ansichtsstatus pro Anfrage haben und Sie Millionen von Transaktionen haben, wird es viel Bandbreite verbrauchen und es würde im Allgemeinen Ihre Seitenantworten verlangsamen, weil Sie damit zu tun haben viele Daten hin und her und diese Daten sind auch sehr groß.

Das ist also ein weiterer Engpass, der Ihre Bandbreite auffrisst, Ihre Ursache nimmt erheblich zu und verlangsamt dann die Reaktionszeiten Ihrer Seite, da der Ansichtsstatus im Allgemeinen stark ist und Sie es mit einer höheren Nutzlast für Anfragen als Antwort zu tun haben. Das ist also eine andere Art von Engpass, der Teil von ASP.NET-Webfarmen ist. Wenn Sie über eine ASP.NET-Anwendung für Webfarmen verfügen, können Sie dieses Problem nicht umgehen. Standardmäßig müssten Sie sich mit einer Menge Ansichtsstatus befassen, und dieses Diagramm deckt es ab, wo der Ansichtsstatus an den Browser zurückgeht, es ist eine clientseitige Statusverwaltung, die auf der Serverseite erstellt wird und an den Browser zurückgeht und es bringt zurück auf dem Server auf Ihrer Post zurück. Jetzt sind Anforderungs- und Antwortpakete schwer, sie verbrauchen viel Bandbreite, eine hohe Nutzlast verlangsamt die Dinge ebenfalls.

Viewstate-Engpass

Engpass bei der Ausführung zusätzlicher Seiten

Jetzt haben wir den vierten Engpass und das ist der vorletzte, wir haben einen weiteren Engpass, nachdem dies der zusätzliche Engpass bei der Seitenausführung ist. Dies gilt nun sowohl für ASP.NET-Webfarmen als auch für ASP.NET MVC-Webanwendungen. Es gibt Szenarien, in denen entweder die gesamte Seitenausgabe gleich ist oder Teile innerhalb einer dynamischen Seite gleich sind, also haben Sie es sehr häufig mit statischen Inhalten innerhalb einer Anwendung zu tun. Die Seitenausgabe ändert sich also nicht sehr häufig, aber Sie führen diese Anforderungen immer noch aus. Es könnte eine Anfrage geben und sie beinhaltet einige Back-End-Datenbanken, die gerendert werden, und dann holen Sie einige Daten aus den Back-End-Datenquellen, Sie lesen diese Daten, machen es sinnvoll, einige tägliche Geschäftslogikschichten und Datenzugriffsschichten anzuwenden gute Sachen und danach rendern Sie eine Antwort und die Antwort wird an den Endbenutzer im Browser zurückgesendet. Nun, was auch immer derselbe Zyklus noch einmal durchlaufen muss und sich dann der Inhalt nicht ändert, Sie müssten denselben Zyklus immer und immer wieder durchlaufen. Diese Seite wird unabhängig davon ausgeführt, ob sie sich ändert oder nicht. Standardmäßig haben Sie es mit vielen statischen Inhalten zu tun, und obwohl sich der Inhalt nicht ändert, führen Sie immer noch dieselbe Anforderung aus. Jetzt erhöht dies Ihre Infrastrukturkosten, zusätzliche CPU, zusätzlichen Speicher, zusätzliche Datenbankressourcen, es kann die Kapazität auf dem Webserver erreichen, es kann auch die Kapazität auf der Datenbankseite im Allgemeinen treffen, es ist etwas, das eine Menge teurer CPU und Ressourcen für die Ausführung von etwas verschwenden würde die bereits ausgeführt wurde. Das ist also ein weiterer Engpass und wir werden über eine Lösung mit Hilfe des Seitenausgabe-Cachings sprechen, wie man sich auch darum kümmern kann. Das deckt also unseren vierten Engpass und den fünften ab, und übrigens beinhaltet dieses Diagramm die Seitenausführung bei statischer Ausgabe und hat mehr Datenbanken erstellt, die wir mit vielen Anfragen zu tun haben.

Extra-Seite-Ausführungs-Engpass

ASP.NET SignalR Backplane Engpass

Und der fünfte Engpass ist SignalR backplane. Nun, dies ist ein sehr spezifischer Anwendungsfall, Sie können SignalR haben oder nicht, aber für diejenigen unter Ihnen, die mit SignalR vertraut sind und wenn Sie eine Backplane eingerichtet haben, ist eine Backplane ein gemeinsamer Nachrichtenbus und Ihr Webserver sendet alle ihre Nachrichten, anstatt Pushing-Funktionalität auf den Client-Browsern zu senden. Es könnte ein Szenario geben, in dem wenige Clientanforderungen von anderen Webservern verarbeitet werden. Wir werden also einfach an die Backplane gesendet und die Backplane sendet wiederum Nachrichten, SignalR-Nachrichten an alle Webserver und diese wiederum an alle ihre verbundenen Clients. Also mit WebSockets ASP.NET SignalR backplane ist eine ziemlich häufige Einrichtung, wenn Sie eine Webfarm haben.

SignalR Backplane NCache oder jedes andere verteilte Caching-Produkt kann angeschlossen werden. Es kann auch eine Datenbank oder ein Nachrichtenbus sein, aber die Idee hier ist, dass die Backplane keine Leistungs- oder Durchsatzprobleme haben sollte. Es sollte sehr gut funktionieren, es sollte Ihnen eine geringe Latenz bieten, es bietet Ihnen einen hohen Durchsatz und gleichzeitig sollte es sehr zuverlässig sein, wenn es ausfällt und Sie alle SignalR-Nachrichten verlieren, die sich auch auf das Geschäft auswirken würden.

Datenbanken sind langsam, sie sind nicht sehr skalierbar, sie sind langsam in der Leistung, Redis ist eine Option, es ist kein natives .NET, also brauchen Sie etwas, das sehr skalierbar, sehr schnell und auch sehr zuverlässig ist. Das ist also ein weiteres Problem innerhalb einer ASP.NET-Anwendung, wenn Sie sie verwenden SignalR backplane dadurch dass. Das vervollständigt also unsere fünf Engpässe, ich weiß, es sind viele Informationen, aber vor allem ist die Datenbank langsam, nicht sehr skalierbar, der ASP.NET-Sitzungsstatus hat standardmäßig keine sehr skalierbaren oder schnellen oder zuverlässigen Optionen. View State für die ASP.NET-Webfarm ist auch ein Engpass, dessen Konfliktquelle, Übernutzung der Bandbreite, statische Seiten innerhalb der Anwendung ausgeführt werden, unabhängig davon, ob sich Ihre Anwendungsinhalte ändern oder nicht. Es wird hingerichtet und dann haben wir es getan SignalR Backplane was im Allgemeinen langsam und nicht sehr zuverlässig ist, es ist nicht sehr skalierbar und Sie brauchen etwas, das im Vergleich sehr skalierbar und sehr zuverlässig ist.

Damit sind unsere fünf Engpässe abgeschlossen. Auf den nächsten Folien werde ich über Lösungen sprechen, und dann werden wir alle diese Engpässe nacheinander durchgehen, und ich werde verschiedene Lösungen vorstellen. Bitte teilen Sie mir dort Ihre Fragen mit, und ich werde diese Fragen jetzt sehr gerne für Sie beantworten. Ich habe hier einige Beispiele für Beispielanwendungen aufgereiht, also werde ich diese in Ordnung verwenden. Also, ich denke, an diesem Punkt gibt es keine Fragen. Ich werde also schnell mit der Lösung beginnen, denn wir haben in unserem nächsten Segment viel zu tun.

Die Lösung: Verteilter In-Memory-Cache

Wir haben verteiltes In-Memory-Caching als Lösung und ich werde es verwenden NCache als Beispielprodukt. NCache ist das wichtigste verteilte Caching-Produkt, .NET-basierter verteilter Cache, es wurde innerhalb von .NET geschrieben und ist hauptsächlich für .NET-Anwendungen gedacht, und es ist eines unserer Hauptprodukte. Ich werde verwenden NCache als Beispielprodukt und wir werden darin über fünf verschiedene Funktionen sprechen NCache das wird sich darum kümmern und Sie würden eine Leistungssteigerung in Ihrer ASP.NET-Anwendung sehen. Es würde sowohl die Leistung als auch die Skalierbarkeit drastisch verbessern, und dies sind nur ASP.NET-spezifische Funktionen. Es gibt andere serverseitige Funktionen, die Sie optimieren können. Dazu gibt es ein separates Webinar wie man sich verbessert NCache Leistung, das wird die Dinge auf eine ganz neue Ebene bringen, das wird die Leistung weiter verbessern, aber in diesem Webinar werde ich über fünf verschiedene Engpässe sprechen und dann über fünf verschiedene Lösungen für diese Engpässe sprechen.

Was ist ein verteilter In-Memory-Cache?

Was ist also ein verteilter In-Memory-Cache und inwiefern ist er schneller und skalierbarer und in einigen Fällen im Vergleich zuverlässiger? Verteilter Cache ist also ein Cluster aus mehreren kostengünstigen Cache-Servern, die zu einer logischen Kapazität für ihren Arbeitsspeicher, ihre CPU sowie ihre Netzwerkressourcen zusammengefasst sind. Wenn Sie also ein Team von Servern haben und dieses Team von Servern zu einem Cluster zusammengeschlossen ist, ist es eine logische Kapazität für Anwendungen, aber es ist eine physische Gruppe von Servern oder VMs, also gibt es hinter uns mehrere Ressourcen und Sie haben die Möglichkeit dazu Fügen Sie spontan weitere Server hinzu. Also, billige Cache-Server, schließen sich zusammen, kamen zusammen und bündeln ihre Ressourcen, und das bildet die Grundlage eines verteilten Caches.

Dann haben wir Cache-Updates zwischen Cache-Servern synchronisiert, es ist in Bezug auf die Daten sehr konsistent als es war, weil es mehrere Server gibt, mehrere Client-Anwendungen sich damit verbinden, also muss jede Aktualisierung, die auf einem Cache-Server vorgenommen wird, auf anderen Web-Cache-Servern sichtbar sein und auch für die Clients, die damit verbunden sind, und ich habe den Begriff sichtbar verwendet, was bedeutet, dass er konsistent sein muss. Ich habe Replikation hier nicht als Begriff verwendet, Replikation ist ein anderes Konzept. Alle Aktualisierungen werden also synchron oder konsistent auf allen Caching-Servern angewendet, sodass Sie für alle Ihre Client-Anwendungen die gleiche Ansicht der Daten haben.

Dann sollte es sowohl für Transaktions- als auch für Speicherkapazität und auch für andere Ressourcen skaliert werden. Wenn Sie weitere Server hinzufügen, sollte die Kapazität nur erhöht werden. Wenn Sie zwei Server haben und den dritten Server mitbringen, haben Sie zuvor beispielsweise 10,000 Anfragen mit einem dritten Server bearbeitet, sollte dies auf 15,000 ansteigen, wenn zwei weitere Server die Kapazität verdoppeln. Es sollte 20,000 Anfragen pro Sekunde verarbeiten, und das ist unsere Erfahrung. Es erhöht tatsächlich die Kapazität und die Gesamtkapazität für die Verarbeitung von Anfragen steigt, wenn Sie die Anzahl der Server hinzufügen, und ich zeige Ihnen einige Benchmark-Zahlen, um dies zu unterstützen. Dies ist die Bereitstellungsarchitektur eines typischen verteilten Caches.

In-Memory-Distributed-Cache

Sie haben ein Team von Cache-Servern, alle Windows-Umgebungen werden 2008, 2012 unterstützt und alle Ihre Anwendungen verbinden sich damit in einem Client-Server-Modell und sie verwenden diese schnelle, skalierbare und zuverlässige Quelle zusätzlich zu unserer relationalen Datenbank. Eines Tages wird dies in der relationalen Datenbank vorhanden sein, Sie können einige oder alle Ihre Daten in den Cache bringen. Sitzungsstatus Dies wird Ihr Hauptspeicher, Ansichtsstatus, Ausgabecache, SignalR backplane dies wird Ihr Hauptanbieter dafür.

NCache Leistungsbenchmarks

Lassen Sie mich Ihnen einige Benchmark-Zahlen zeigen, um zu unterstützen, dass es sehr skalierbar ist. Auf unserer Website werden diese Nummern veröffentlicht. Dies sind also die Testdetails, und wenn Sie sich dann die Leistung ansehen, wächst diese für Lesevorgänge nicht so linear für Schreibvorgänge, aber dies ist die Topologie, die wir im heutigen Webinar verwenden werden, Lese- und Schreibvorgänge wachsen linear und dies hat linear wachsende Lese- und Schreibvorgänge sowie Backups. Dies kommt also auch mit Backup-Unterstützung, weshalb die Schreibleistung oder -kapazität etwas geringer ist als die Partition, die kein Backup hat, also hat dies auch einen Backup-Overhead. Dies ist also unsere beliebteste Topologie für Lese- und Schreibvorgänge, und wenn Sie weitere Server hinzufügen, wird auch die Kapazität skaliert.

Praktische Demo

Lassen Sie mich Sie zu unserer Demo-Umgebung führen, einen verteilten Cache einrichten und dann nacheinander mit diesen Funktionen beginnen. Und Leute, bitte ich meine, wenn es irgendwelche Fragen gibt?

Ich werde verwenden, ich habe bereits installiert installiert NCache, Umfang dieses Webinars ist nicht rund NCache Konfigurationen oder Setup. Also, ich werde hier einige Details überspringen, aber nur um Sie wissen zu lassen, ich habe heruntergeladen NCache von unserer Website eine voll funktionsfähige Testversion und dann habe ich sie auf zwei meiner Cache-Server-Boxen installiert und eine Maschine auf meiner Seite wird als Client verwendet. Sie können installieren NCache auch auf dem Client, oder Sie können die NuGet-Pakete nach Bedarf verwenden.

Erstellen Sie einen Cache

Ich erstelle einfach einen Cache, nennen wir ihn aspnetcache, weil wir uns heute darauf konzentrieren.

erstellen

Ich wähle den Partition Replica Cache und alle diese Einstellungen werden ausführlich in unserem regulären NCache Architektur Live- und OnDemand-Webinare:

partitioniertes Replikat

Asynchrone Replikationsoption und hier gebe ich die Server an, die anfänglich Teil meines Cache-Clusters sein werden.

Server angeben

Belassen Sie alles beim TCP/IP-Port. NCache ist eine TCP/IP-basierte Kommunikation, Server-Server-Kommunikation und Client-Server werden über TCP/IP verwaltet, und dann wird die Größe des Caches auf jedem Server beibehalten.

Fertig

So einfach ist es, den Cache einzurichten. Auf der rechten Seite haben wir alle Einstellungen, die sich auf diesen Cache beziehen, und übrigens können Sie auch Befehlszeilen sowie PowerShell-Tools einrichten und dann auch alles von der Befehlszeile oder Powershell aus verwalten. Ich werde mybox hinzufügen, von wo aus ich Anwendungen ausführen möchte. Damit wir die clientseitigen Konfigurationen aktualisiert haben und ich mich mit diesem Cache verbinden kann, werde ich diesen Cache-Cluster starten und testen, und das war's. Die Einrichtung meiner Server-Site ist an dieser Stelle abgeschlossen. Leute, bitte lasst es mich wissen, gibt es irgendwelche Fragen? Also gut, das hat begonnen. Ich klicke mit der rechten Maustaste und wähle Statistiken.

Ron, ich habe hier ganz schnell eine Frage NCache fließt zur Unterstützung von Java-Anwendungen für JSP-Sitzungen ein Sitzungs-Caching oder handelt es sich nur um ASP.NET-Apps? Okay, das ist eine sehr gute Frage. Dieses Webinar konzentrierte sich in erster Linie auf ASP.NET, also habe ich mich mehr auf die ASP.NET-Site konzentriert, aber ja, um diese Frage zu beantworten NCache Java-Anwendungen vollständig unterstützen, wir haben einen Java-Client und dann für Java-Anwendungen, wenn Sie Java-Websitzungen oder JSP-Sitzungen haben, könnten Sie sehr gut verwenden NCache. Unser Anbieter bleibt also genau derselbe, es handelt sich um eine Option ohne Codeänderung, und wir haben eine Beispielanwendung, die mitinstalliert wird NCache auch. Sie müssen also nur installieren NCache in einer Windows-Umgebung oder Sie könnten auch Container verwenden, und dann könnte die Anwendung unter Windows oder auch in einer Linux-UNIX-Umgebung sein, sie unterstützt Java-Anwendungen vollständig.

Cache-Statistiken überwachen

Ich habe Statistiken geöffnet, nur um einige Überwachungsaspekte zu sehen, ich habe auch ein Überwachungstool geöffnet, das mit installiert wird NCache. Ich werde schnell eine Stresstest-Tool-Anwendung ausführen, um zu überprüfen, ob mein Cache ordnungsgemäß konfiguriert ist, und als Nächstes werde ich tatsächlich mit den Beispielanwendungen beginnen, ein Client ist verbunden, Sie sollten hier eine Aktivität sehen, los geht's und wir haben Zähler zeigt den Wert der Anfragen pro Sekunde von beiden Servern und wir haben einige Diagramme, die bereits gefüllt sind.

Client-verbunden
Zähler

Stellen Sie also sicher, dass alles richtig konfiguriert ist, und dann können wir mit unseren Beispielanwendungen beginnen.

Also, erste Beispielanwendung ist, das sind fünf verschiedene Optimierungen. Ich werde nacheinander darüber sprechen und Ihnen dann die Beispielanwendungen zeigen. Zunächst einmal können Sie verwenden NCache Für das Daten-Caching haben wir unsere detaillierte API für Datenbankengpässe. Sie können einen schnellen verteilten In-Memory-Cache verwenden, er ist schneller, weil er sich im Speicher befindet, er ist skalierbarer, weil Sie mehr Server hinzufügen können, und dann erhöhen Sie die Kapazität zur Laufzeit, indem Sie weitere Server hinzufügen. Sie können es für den Sitzungsstatus verwenden, dies ist eine Option ohne Codeänderung, Sitzungen sind sehr zuverlässig NCache Da diese repliziert werden, werden die Sitzungen im Vergleich auch in einem schnellen und skalierbaren Repository verwaltet, und Sie benötigen keinen klebrigen Lastenausgleich für Sitzungen. Ich werde über weitere Vorteile sprechen, sobald wir diese Beispielanwendungen tatsächlich zeigen, aber ich möchte Sie nur wissen lassen, dass dies einige der Vorteile sind, die Sie daraus ziehen NCache sofort wie Sie, sobald Sie einstecken NCache für diese.

Für Webfarmen können Sie den Ansichtszustand verwenden, Sie können den Ansichtszustand auf dem Serverende speichern, Sie müssen den Ansichtszustand nicht senden und es reduziert auch die Größe der Nutzlast des Ansichtszustands, dann können Sie verwenden NCache für SignalR Backplane, das ist unsere vierte Option und dann können Sie auch verwenden NCache für Ausgabe-Caching sowie für statische Inhalte und dies gilt auch für ASP.NET core. Sie können es für den Sitzungsstatus in ASP verwenden.NET core und Sie können es auch für das Zwischenspeichern von Antworten in ASP verwenden.NET core um weitere Anwendungsbeispiele zu finden.

Beispiel für das Caching von ASP.NET-Sitzungen

Beginnen wir also mit der Speicherung des ASP.NET-Sitzungszustands. Dies ist am einfachsten, Sie können dies innerhalb von fünf Minuten einrichten und schnell testen. Tatsächlich werde ich Ihnen zeigen, wie Sie es einrichten und dann damit beginnen.

Das ist also unsere erste Beispielanwendung, was ich getan habe, ist, dass diese mit installiert wird NCache auch, aber ich habe es leicht modifiziert. Für das Sitzungs-Caching müssen Sie lediglich ein Assembly-Tag hinzufügen, diese beiden Assemblys sind redundant, diese sind für einen anderen Anwendungsfall für das Objekt-Caching, aber Sie brauchen es nur Alachisoft.NCache.SessionStoreProvider-Assembly. Version 4.9 ist die neueste Version und dann benötigen Sie auch für diese Assembly Kultur und öffentliches Token. Dies ist also ein typischer Verweis auf diese Sitzungsstatus-Assembly, danach müssen Sie Ihr vorhandenes Sitzungsstatus-Tag durch ersetzen NCache. Wenn Sie bereits ein Sitzungsstatus-Tag haben, müssen Sie es ersetzen, wenn Sie keins haben, war es InProc, in diesem Fall könnten Sie es tatsächlich ersetzen, Sie können es als neues hinzufügen. Hier ist der Modus benutzerdefiniert und der Anbieter ist NCacheSessionsProvider, Zeitüberschreitungswert ist, wenn ein Sitzungsobjekt vorhanden ist NCache länger als zwanzig Minuten inaktiv bleibt, würde es automatisch aus dem Cache entfernt werden.

Dann gibt es einige Einstellungen wie Ausnahmen, die aktiviert werden müssen. Dies kann also als Beispiel-Tag verwendet werden, Sie können es von hier kopieren und in die Anwendung einfügen, und das Wichtigste ist dann der Cache-Name. Sie müssen nur den Cache-Namen aspnetcache angeben. Ich denke, ich verwende den gleichen Namen aspnetcache und es würde die Konfigurationen für dieses Beispiel auflösen, weil Sie nur den Namen angeben. Es würde also nur die Konfigurationen für diesen Cache aus dem aspnetcache client.ncconf lesen oder diese Datei kann auch Teil des Projekts werden. Wenn Sie über ein NuGet-Paket verfügen, können Sie diese Datei auch zu einem Teil Ihres Projekts machen, und das war's. Sie müssen dies nur speichern und mich einfach als Hauptseite erstellen lassen, da wir hier zwei Seiten verwendet haben und ich dies ausführen werde und dies die Gastspielsitzungen für den Anbieter starten und eine Verbindung herstellen würde NCache für Sitzungsdaten.

Ich erwarte also, ein Sitzungsobjekt im Cache zu erstellen, und dann lese ich einige Daten aus der Sitzung zurück und zeige Ihnen auch das Sitzungsobjekt, das erstellt wird. Dies ist eine Ratespielanwendung, mit der Sie eine Zahl zwischen eins und hundert erraten können und die dann tatsächlich den vorherigen Gast aus dem Sitzungsobjekt druckt. Es hat also angenommen, dass die Zahl zwischen 0 und 23 liegt. Also, ich schätze einfach 12, die Zahl liegt zwischen 12 und 23. Also hat es auch die letzte Zahl gelesen. Lassen Sie uns raten, dass die Zahl zwischen 13 und 23 liegt. Also raten wir noch einmal. Ich bin nicht in der Lage zu raten, hoffentlich komme ich dorthin, aber nur um Sie wissen zu lassen, dass auf dem Serverende ein Sitzungsobjekt erstellt worden sein muss.

Lassen Sie mich Ihnen das einfach mit Hilfe eines Tools zeigen und da ist es, NCache test ist ein Schlüsselwort, das ich dieser Beispielanwendung anhänge. Wenn ich es ändere, dient dies zur Unterscheidung zwischen Sitzungen verschiedener Anwendungen. Es könnte ein Szenario geben, in dem Sie zwei Anwendungen haben und denselben Cache für beide Anwendungen verwenden. In diesem Fall können Sie also eine App-ID an die Sitzungsvariable anhängen lassen, aber normalerweise sollte eine Anwendung ihre Sitzung in einem dedizierten Cache zwischenspeichern. Es spielt also keine Rolle, ob Sie es sogar als leere Zeichenfolge angeben, dies jedoch erstellt wurde und dies Ihre ASP.NET-Sitzungs-ID ist, die Sitzung hier wird genau hier repliziert. Wenn also dieser Server ausfällt, werden Ihnen die Sitzungsdaten automatisch zur Verfügung gestellt.

Einige weitere Vorteile von NCache Sitzungsstatus im Vergleich zu InProc-Treffern außerhalb des Prozesses, sodass Ihr Webprozess entweder vollständig zustandslos ist. Das ist also so, wie es vom HTTP-Protokoll bevorzugt wird, es ist skalierbarer, Sie können mehr Ressourcen hinzufügen, es ist schneller, weil es In-Memory ist, im Vergleich zu InProc vergleichbar und außerdem sehr zuverlässig. Wenn ein Server ausfällt, müssen Sie sich um nichts kümmern und vor allem müssen Sie keine Sticky-Sessions oder Balancing mehr verwenden. Sie können einen gleichmäßigen Lastausgleich haben und Anfragen können von einem Webserver zum anderen springen. Sie müssen sich um nichts kümmern, da Webserver nichts speichern, tatsächliche Sitzungsobjekte werden darin gespeichert NCache und dies ist ein äußerer Prozessspeicher für Ihre Anwendungen und Vergleiche von StateServer. Es ist kein Single Point of Failure, wenn ein Server ausfällt oder Sie ihn zur Wartung herunterfahren, müssen Sie sich um nichts kümmern, es würde einfach ohne Probleme funktionieren.

Zweitens ist es sehr skalierbar, Sie können spontan weitere Server hinzufügen. Es ist sehr zuverlässig, es ist sehr skalierbar, es ist im Vergleich schnell. Für Datenbanken ist es nicht langsam, es ist schnell und es ist sehr skalierbar und in einigen Fällen ist es sogar besser in Bezug auf die Zuverlässigkeit, wenn Sie keine Replikation für Datenbanken haben. Das deckt es also ab und ein weiteres wichtiges Merkmal darin NCache ist unsere Multi-Site-Session-Unterstützung, das ist ein weiteres Feature Mehrregionale Sitzungen, in dem Sitzungen aus zwei verschiedenen Regionen gespeichert werden NCache und Sie können vollständig synchronisierte Sitzungen haben.

ncache-Multi-Region-Aspnet-Sitzung

Wenn eine Session-Anfrage von einem Server zum anderen oder von einer Region zur anderen springt, wird sie automatisch über die Region gefüttert und hierher gebracht und umgekehrt. Wenn Sie also die Seite nach unten bringen müssen, können Sie Ihren gesamten Datenverkehr auf die andere Seite leiten, indem Sie den Cache für einige Zeit laufen lassen. Das ist also ein weiteres Feature. Eine unserer größten Fluggesellschaften, ein Fluggesellschaftskunde, nutzt diese Funktion tatsächlich für ihre Standortaffinität. Dies deckt also unseren ASP.NET-Sitzungsstatus ab. Dies ist ein Anbieter ohne Codeänderung. Bitte lassen Sie es mich wissen, wenn Sie Fragen dazu haben. Dann habe ich bereits eine Frage zu JSP-Sitzungen beantwortet, die Sie verwenden können NCache auch für Java-basierte Websessions. Vorausgesetzt, es gibt keine Fragen.

ASP.NET View State Caching-Beispiel

Als Nächstes werde ich jetzt über den Anzeigestatus sprechen NCache hat auch einen Ansichtszustandsanbieter, so funktioniert es im Grunde, dass wir den Ansichtszustand auf der Serverseite behalten. Es ist wieder ein Anbieter, alles, was Sie tun müssen, ist, ein Abschnittsgruppenrecht einzurichten, seine Inhaltseinstellungen, es sind ContentOptimization.Configurations.ContentSettings. Der Name der Abschnittsgruppe ist nContentOptimization und dann hat diese einige Einstellungen, wo Sie zum Beispiel einen Cache-Namen nehmen, ich verwende gerade mycache, so wie wir unseren entworfen haben ASP.NET view state Anbieter ist, dass wir den Ansichtszustand auf dem Serverende richtig halten. Also, zuerst werde ich ohne Caching laufen, obwohl ich den vorherigen Anbieter angeschlossen habe, aber ich habe das Zwischenspeichern des Ansichtszustands auf "false" eingestellt, und ich werde dies ausführen und Ihnen den tatsächlichen Ansichtszustand zeigen, der zurückgeht zum Browser.

Also zeige ich Ihnen die Standardoption und dann zeige ich Ihnen die NCache Status anzeigen und wir vergleichen den Unterschied. Es gibt also eine Webfarm für einige Seiten, und ich zeige Ihnen die Quelle der Ansichtsseite.

Webfarm

Dies ist der Standardansichtszustand, der Wertteil, lassen Sie mich ihn hierher bringen und hier einfach ein temporäres Dokument erstellen. Dies ist nun der Standardansichtsstatus, der Teil meines Antwortpakets ist, und wenn ich auf diese Seite zurückkehre, wird er auch Teil meines Anforderungspakets sein. Das ist eine individuelle Anfrage, und beachten Sie, wie viele Zeichen sie an Anfrage- und Antwort-Header angehängt hat, und das gilt für alle Anfragen, die ich stellen werde. Lassen Sie mich Ihnen noch ein paar weitere Anfragen zeigen und lassen Sie mich Ihnen auch die Quelle der Ansichtsseite dieser anzeigen.

Es ist also fast ähnlich, wie Sie es auf dem Bildschirm sehen könnten. Jetzt mit NCache Was wir getan haben, ist, dass wir Ihren Ansichtsstatus mit Hilfe unseres Ansichtsstatusanbieters abfangen. Wir behalten den Ansichtsstatus auf der Serverseite bei, also erstellen wir mit diesem Wertteil einen Schlüssel und einen Wert für eine bestimmte Seite der Webfarm, die wir auf der Serverseite gespeichert haben, jetzt wird er auf der Serverseite gespeichert, also senden wir ein kleines Token zurück zum Browser. Das ist also ein statisches Größentoken, das an den Browser zurückgesendet wird. Es ändert sich nie wirklich, es wird immer dorthin gesendet und dann zurückgebracht, um wieder verwendet zu werden, und wenn Sie zurücksenden, rufen Sie tatsächlich an NCache und holen Sie sich den zusätzlichen Ansichtsstatus von NCache und verwenden Sie es dann in Ihrer Webfarm, um den Status tatsächlich anzuzeigen, und genau das tun wir hinter den Kulissen.

Die Vorteile, die Sie für Ihr Ansichtszustandspaket erhalten, werden kleiner, da es sich um ein Token handelt. Das hat also insgesamt Auswirkungen auf die Reduzierung der Größe der Nutzlast für Anfrage und Antwort. Dies verbessert also Ihre Leistung und zweitens, wenn Sie Hunderte von Kilobyte Ansichtsstatus haben, die für Tausende von Anfragen hin und her reisen, wird dies Ihre Bandbreite auffressen. S, das wird nicht passieren mit NCache, NCache view state ist ein statisches Token und ich zeige Ihnen das Token ganz schnell.

Ron, lass mich einfach für die Frage einspringen, ganz schnell geht es NCache Haben Sie Rechnungssicherheitsfunktionen wie die Verschlüsselung für Sitzungen und das Zwischenspeichern des Anzeigestatus? Ja, das sind Funktionen, die Sie explizit einrichten können, diese sind allgemein NCache Merkmale. Der gesamte Ansichtsstatus ist also bereits eine verschlüsselte Zeichenfolge, aber wenn Sie weiter verschlüsseln und mich sehen lassen möchten, ob es in der Nähe ist, können Sie die Verschlüsselung für den Cache selbst aktivieren. Sie müssen ihn stoppen, die Verschlüsselung einrichten, wir haben DES-Anbieter , wir haben AES-Anbieter, wir haben FIPS-Client, FIPS-konform, DES-AES-Anbieter. Also, ja, Sie können dies einfach einrichten und die gesamte Nutzlast von Client-Servern wird hier hinein verschlüsselt und entschlüsselt bzw. abgerufen. Das ist also etwas, das Sie bei Bedarf einrichten und Dinge zum Laufen bringen können, und mit dieser Frage möchte ich das auch hervorheben NCache speichert nicht Dies ist der Ansichtszustand danach NCache hat angeschlossen wurde als Anbieter angeschlossen und beachten Sie den Unterschied, es sind diese vielen Zeichen gegenüber diesen vielen Zeichen. Also, das ist Ihre Vorgabe, das ist mit NCache und sehen Sie selbst den Unterschied, dies verlangsamt, reduziert die Größe der Nutzlast über alle Leistungssteigerungen, die Kosten für die Bandvirtualisierung sinken. Sie sehen also viele Verbesserungen in der Architektur und vor allem wird Ihr aktueller Ansichtsstatus nie mehr wirklich an den Browser zurückgesendet. Es wird serverseitig gespeichert, es ist im Allgemeinen sicher.

Also, basierend auf dieser Frage, vielen Dank, dass Sie dies gestellt haben NCache Der Anzeigestatus ist standardmäßig sicherer als die Standardoption, da wir ihn auf der Serverseite speichern, wo er tatsächlich benötigt wird. Also, ich hoffe, das hilft. Ich werde dies beenden, alle Fragen zum Ansichtsstatus, ansonsten werde ich mit unserem nächsten Segment fortfahren.

Anwendungsdaten-Caching-Beispiel

Lassen Sie mich Ihnen aus Zeitgründen zuerst das Objekt-Caching zeigen. Ich denke, ich sollte das zuerst behandeln. Für Datenbankengpässe, alles, was in der Datenbank gespeichert wird und die Dinge verlangsamt, können Sie alternativ einen verteilten Cache wie verwenden NCache. Dies ist NCache API hier.

Cache-Verbindung
Cache cache = NCache.InitializeCache("myCache");
cache.Dispose();
Abrufen von Daten

Employee employee = (Employee) cache.Get("Employee:1000");
Employee employee = (Employee) cache["Employee:1000"];
bool isPresent = cache.Contains("Employee:1000");
Schreiben von Daten
cache.Add("Employee:1000", employee);
cache.AddAsync("Employee:1000", employee);

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

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

So verbinden Sie den Cache, so entsorgen Sie das Handle gegen Ende der Operationen, alles wird in einem Schlüsselwertpaar gespeichert, es ist ein .NET-zugelassenes Objekt mit Zeichenfolgeschlüsselwert, auf das Sie Ihre Datentabellen auf Ihre Domänenobjekte abbilden können dann speichern Sie Ihre Domänenobjekte und dann behandeln Sie Domänenobjekte, indem Sie einzelne Objekte oder Sammlungen mit Beziehungen speichern. SQL-Suchvorgänge gehen weiter, aber dies ist eine grundlegende Erstellungs-, Lese-, Aktualisierungs- und Löschoperation.

Ich werde schnell eine Beispielanwendung ausführen und demonstrieren, wie Sie sie tatsächlich verwenden würden NCache für Objekt-Caching. Sie benötigen diese beiden zusammenfassenden Referenzen Alachisoft.NCache.Web und Alachisoft.NCache.Laufzeit. Sobald Sie dies getan haben, lassen Sie mich dies als Startseite erstellen und Ihnen den Code dahinter zeigen. Dies ist eine ASP.NET-Webfarm, aber wenn Sie MVC-Controller haben, können Sie auch denselben Ansatz verwenden, und dann habe ich diesen Namespace genau hier und innerhalb dieser Anwendung initialisiere ich mycache, Sie müssen den Namen des Cache angeben und Sie könnten hier auch Server angeben, indem Sie InitParams right cache InitParams direkt hier verwenden, oder Sie könnten einfach den Namen angeben und den Namen über die client.ncconf auflösen, die ich Ihnen zuvor gezeigt habe. Es gibt ein addObject, das einen Kunden hinzufügt, Name ist David Jones, männlich, Kontaktnummer, das ist Adresse, und dann rufe ich cache.Add auf.

In ähnlicher Weise füge ich dies ein, indem ich die Seite ändere, oder ich könnte tatsächlich auch den Namen ändern, nur um sicherzustellen, dass dies aktualisiert wird, und dann rufe ich cache.Insert auf, und dann bekomme ich das Objekt zurück, bekomme das Anzahl des Objekts. Ich entferne dieses Objekt, ich führe nur einen Belastungstest durch. 100 Artikel werden immer wieder aktualisiert. Lassen Sie uns also die Beispielanwendung ausführen, so intuitiv ist es, damit zu beginnen, und es würde einfach die Anwendung starten, und ich könnte all diese Vorgänge für Sie ausführen, und bevor ich dies tatsächlich tue, möchte ich auch um Ihnen die Ansichtszustände anzuzeigen, die zwischengespeichert wurden NCache.

Sie können die Schlüssel für den Ansichtsstatus für drei Seiten vs sehen, und dies ist der tatsächliche Schlüssel des Objekts, und dann befindet sich der tatsächliche Ansichtsstatus im Wertteil. Ich habe vergessen, dies jetzt zu erwähnen, in der Annahme, dass wir mich nur den Inhalt klären lassen. Da wir uns jetzt also nur mit Objekt-Caching-Daten befassen, lassen Sie mich dies eigentlich nur vom Manager aus tun, es ist praktisch. Also, ich werde ein Objekt hinzufügen, der Kunde hat hinzugefügt, dass ich dieses Objekt zurückholen werde. Also, wir haben David Jones, Alter 23. Ich aktualisiere es und füge es dann hinzu, hole es zurück, jetzt ist es David Jones 2 und dann haben wir 50 als Alter, wieder bekommen, Elemente im Cache 1, ich werde es entfernen dieses objekt nochmal items in den cache 0 füge es noch einmal ein, insert ist in add auch hole das objekt zurück und dann kann ich dir das im cache zeigen. Also, ich habe mich an diesem Punkt mit einem Objekt beschäftigt und der Schlüssel war Kunde im Namen des Kunden, der daran angehängt wurde, und dann starte ich den Ladevorgang, teste jetzt. Sie würden einige Aktivitäten im Cache sehen, es gehen Anfragen ein und Sie haben Clientanfragen, die sich mit den Daten befassen.

Statistiken

Und wenn ich diese Dump-Cache-Schlüssel einfach erneut ausführe, werden mir nur die hundert Schlüssel angezeigt, die zusammen abgelegt wurden. Das sind also die Schlüssel, die ich hinzugefügt habe. So einfach ist es also, mit dem Objekt-Caching zu beginnen, alle Daten, die in die Datenbank gehören und die Dinge verlangsamen, schränken Ihre Skalierbarkeit ein, auf die Sie sie bringen können NCache mit unserem Objekt-Caching. Es können beliebige Domänenobjekte, Sammlungen, Datensätze, Bilder sein, jede Art von anwendungsbezogenen Daten, die mit dem Objekt-Caching-Modell zwischengespeichert werden können. Ich hoffe, das hilft, lassen Sie mich damit anfangen, alles klar, das deckt unser Daten-Caching ab, das als nächstes kommt SignalR Backplane.

ASP.NET SignalR Backplane Stichprobe

Lass uns reden über SignalR. Mit NCache wir haben einen mächtig Pub/Sub-Messaging Plattform. Wir haben also eine Beispielanwendung, und in dieser zeige ich Ihnen auch die NuGet-Pakete. NCache Bibliotheken werden mit der Installation installiert, oder Sie können unsere NuGet-Pakete verwenden. Wenn Sie also zu unserem Online-NuGet-Repository gehen und nach „ NCache, sehen Sie alle NuGet-Pakete. Alachisoft.NCache.SDK ist für Objekt-Caching, Linq für Linq-Abfragen, wir haben einen Session-State-Provider, dann haben wir auch Open Source und Community.

Dies ist das NuGet-Paket, das ich in diese Anwendung eingeschlossen habe. Erstellen Sie es einfach und lassen Sie uns sehen, ob es gut funktioniert, da ein NuGet-Paket hinzugefügt werden sollte. In Ordnung, für SignalR Backplane Alles, was Sie tun müssen, ist sicherzustellen, dass Sie das SignalR NuGet-Paket hinzugefügt haben, ich meine, das ist die Installation, wenn es nicht bereits installiert ist, in Ordnung. Sie haben also ein NuGet-Paket hinzugefügt und danach müssen Sie es hinzufügen, es hat nach Bedarf einige SignalR-Assemblys und auch einige Hilfsassemblys hinzugefügt, und wenn Sie danach zu web.config gehen, habe ich dort gerade einige Einstellungen hinzugefügt myname des Caches ist aspnetcache rechts und dann der Ereignisschlüssel, der der Name des Themas ist, das Sie dafür mögen. Sie möchten also tatsächlich einen Themennamen angeben, auf dessen Grundlage SignalR-Chatnachrichten oder SignalR-Nachrichten für diese bestimmte Chatanwendung übertragen werden sollen, und dann müssen Sie nur noch eine Codezeile ändern, in der Sie die angeben Name des Caches und den Ereignisschlüssel und zeigen auf Wörter NCache und führen Sie die Beispielanwendung aus. Es würde automatisch verwenden NCache für SignalR Backplan, NCache wird zu Ihrem Backplan, so einfach ist das Einstecken NCache für SignalR-Anwendung.

Vorteile, die Sie im Gegensatz zu seinem nativen .NET erhalten Redis Es ist schnell, skalierbar, zuverlässig im Vergleich zu Datenbanken und Nachrichtenbussen, und dann haben wir ein voll funktionsfähiges, vollständig unterstütztes Pub/Sub-Modell, das dies unterstützt. Sie können Pub/Sub-Messaging also auch direkt verwenden, aber eine Erweiterung dieses einen Anwendungsfalls von Pub/Sub-Messaging ist unsere SignalR Backplane und es ist auch ziemlich einfach einzurichten.

Diese Anwendung hat also begonnen. Hier sollte ein Schlüssel sein, ich denke, es ist schwer, den Schlüssel zu finden, aber nur, um Ihnen den Chat zu zeigen NCache, das funktioniert und ich werde dies an einen anderen Browser übertragen, indem ich einen anderen Benutzer anmelde, sagen wir Nick. Wenn ich dies zurückbringe, könnten Sie sehen, dass die Nachricht tatsächlich auch an den anderen verbundenen Client gesendet wurde. So einfach ist es also. Lassen Sie mich noch einmal fragen und dann prüfen, ob es wie erwartet funktioniert, also los geht's. Das wird also durchgezogen NCache und es ist sehr einfach einzurichten und so richten Sie die letzte Funktion ein NCache, der fünfte Booster ist das Zwischenspeichern der Ausgabe.

Ron, ich habe eine Frage zu SignalR, unseren SignalR-Nachrichten, die als visuelles Objekt darin gespeichert sind NCache oder tut es? NCache Benachrichtigung dafür verwenden? NCache verwendet dafür die Pub/Sub-Benachrichtigung. Wir haben also eine Pub/Sub-Messaging-Plattform, die im Hintergrund läuft, im Cache selbst würdest du nur ein Objekt sehen oder du wirst nicht einmal ein Objekt sehen, weil es ein Thema ist. Es gibt also ein Thema, das erstellt wird, es ist ein logischer Tunnel, in dem mehrere Arbeitsprozesse verbunden sind und tatsächlich übertragen werden NCache, alle SignalR-Nachrichten zu diesem Thema. Also, es ist ein Benachrichtigungs-Framework, wenn Sie fragen, ob Sie viele Nachrichten sehen würden, die im Cache hinzugefügt wurden, nein, würden Sie nicht, Sie würden nur ein Thema sehen und dann gibt es Nachrichten innerhalb des Themas. Es gibt ein paar Statistiken in den Popper-Begegnungen, die Sie visualisieren können, um zu sehen, wie viele Nachrichten innerhalb des Themas vorhanden sind, aber was einzelne Objekte betrifft, sehen Sie diese Objekte nicht, Sie sehen nur ein Objekt als Thema. Ich hoffe das hilft.

ASP.NET-Ausgabe-Caching-Beispiel

Letztes Feature darin, ich denke, wir haben auch wenig Zeit, ich werde das schnell durchgehen. Es ist unser Ausgabe-Caching, Sie müssen nur den Abschnitt Ausgabe-Caching einrichten, auf den Sie verweisen müssen NCache Ausgabe-Cache-Provider-DLL. Das ist genau hier, Sie brauchen diese Referenzen Ncache.Adapter, Web, Laufzeit im Cache und danach verweisen Sie einfach auf den N-Ausgabe-Cache-Anbieter und richten dann den Namen des Caches auf aspnetcache ein, die Version sollte die neueste sein. Es funktioniert so, dass es tatsächlich die Ausgabe statischer Seiten zwischenspeichert, Sie führen es einfach aus und dann würde es nur die Ausgabe einer statischen Seite zwischenspeichern. Wenn die gesamte Seite oder Teile innerhalb der Seite statisch sind und Sie Ihre statischen Teilseiten mit diesem Anweisungsausgabecache dekorieren, geben Sie eine Dauer, einen Ort und VaryByParam an. Wenn sich diese Parameter nicht ändern, bedeutet dies automatisch, dass dies dieselbe Ausgabe ist.

So wird Ihren Endbenutzern die zwischengespeicherte Ausgabe präsentiert, Sie müssen die Seiten nicht ausführen, Sie müssen keine Datenbanken einbeziehen, Arbeitsprozesse entlasten, die Datenbank entlasten, teure CPUs und Maschinenressourcen sparen und erhalten Sie eine fertige Seitenausgabe für Ihre Endkunden zur Verfügung gestellt. Es verbessert also insgesamt Ihre Leistung, ASP.NET bietet dies als Feature und NCache bringt es auf eine verteilte Ebene, wo wir eine sehr skalierbare, sehr schnelle und sehr zuverlässige Seitenausgabe gespeichert haben NCache ohne Codeänderungen und dies gilt für ASP.NET core Außerdem könnten Sie verwenden, wie Sie verwenden können NCache innerhalb von ASP.NET core auch Webanwendungen. Wir haben dazu ein separates Webinar durchgeführt, und wenn wir verteilten Cache haben, haben wir Sitzungsspeicher und dann haben wir auch ASP.NET core Response-Caching sowie EF-Core-Caching.

Das sind also einige der Features, die ich hervorheben wollte, damit sind unsere fünf Leistungsbooster komplett. Ich hoffe es hat euch gefallen, bitte lasst es mich wissen, wenn es noch weitere Fragen gibt, ich denke wir haben auch sehr wenig Zeit. Also, wenn es jetzt weitere Fragen gibt, ist es an der Zeit, diese Fragen zu stellen, also lassen Sie es mich bitte wissen.

Generell möchte ich das auch erwähnen NCache ist ein vollständig elastischer dynamischer Cache-Cluster mit hundertprozentiger Betriebszeit, kein Single Point of Failure. Wir haben viele Topologien und Funktionen wie Verschlüsselung, Sicherheit, Komprimierung, E-Mail-Benachrichtigungen, Datenbanksynchronisierung, SQL-ähnliche Suchen, kontinuierliche Abfragen, Pub/Sub-Modell, relationale Daten in NCache, diese werden alle als Teil verschiedener Funktionen abgedeckt. Also, wenn es irgendwelche spezifischen Fragen dazu gibt, dann zögere nicht, diese Fragen auch zu stellen, andernfalls werde ich sie einfach abschließen und an Nick weitergeben.

Vielen Dank Ron, eine letzte Frage hier ist es möglich, einen benutzerdefinierten Anbieter für das Zwischenspeichern von Sitzungen einzurichten NCache? NCache ist bereits ein benutzerdefinierter Anbieter. NCache liegt unter einem benutzerdefinierten Anbieter, die Standardmodi sind InProc, State Server oder SQL Server, und der vierte Modus von ASP.NET ist ein benutzerdefinierter. So, NCache Anbieter selbst ist ein benutzerdefinierter Anbieter. Ich bin etwas verwirrt über die Frage, ob es diesbezüglich spezielle Anforderungen gibt. Bitte lassen Sie es mich andernfalls wissen NCache selbst ist ein benutzerdefinierter Anbieter für ASP.NET.

Okay, vielen Dank Ron, wenn es keine weiteren Fragen gibt, möchte ich mich bei allen bedanken, die heute gekommen sind und sich uns angeschlossen haben, und nochmals danke, Ron, für Ihren wertvollen Einblick in dies und Leute, wenn Sie Fragen haben, können Sie uns jederzeit erreichen, indem Sie uns eine E-Mail senden beim support@alachisoft.com. Sie können unser Verkaufsteam kontaktieren, indem Sie uns eine E-Mail an senden sales@alachisoft.com und jemand aus dem Verkaufsteam wird gerne mit Ihnen zusammenarbeiten und sicherstellen, dass alle Ihre Fragen beantwortet werden, alle Informationen bereitstellen, die Sie benötigen, und damit würde ich auch vorschlagen, dass Sie eine Testversion von unserer Website herunterladen können von NCache, wird mit einer 30-Tage-Testversion geliefert. Wir haben auch eine Mediation, die eine kostenpflichtige Support-Option sowie eine kostenlose Open-Source-Edition hat, dreizehn Jahre mit so viel Inhalt. Vielen Dank an alle, die sich uns angeschlossen haben, und wir sehen uns beim nächsten Mal, danke.

Was macht man als nächstes?

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