In diesem Artikel werden wir verschiedene Methoden der Datenübertragung zwischen ASP.NET-Seiten diskutieren. Wir hoffen, dass dies jedem helfen kann, den Nutzen und die Bequemlichkeit der Datenübertragung zwischen ASP.NET-Seiten richtig zu verstehen.
0. Einführung
Webseiten sind zustandslos. Der Server geht davon aus, dass jede Anfrage von einem anderen Benutzer stammt. Daher wird der Status von Variablen zwischen mehreren aufeinanderfolgenden Anfragen für dieselbe Seite oder beim Wechseln der Seite nicht beibehalten. Beim Entwerfen und Entwickeln eines Websystems mit ASP.NET besteht ein wichtiges Problem darin, sicherzustellen, dass Daten korrekt, sicher und effizient zwischen Seiten übertragen werden. Asp.net bietet eine Vielzahl von Technologien wie Statusverwaltung, um das Problem der Datenspeicherung zu lösen Lassen Sie uns in Bezug auf Datenprobleme die verschiedenen Methoden zur Lösung dieses Problems unter .NET und ihre jeweiligen anwendbaren Situationen untersuchen.
1. Verschiedene Methoden und Analyse der Datenübertragung zwischen ASP.NET-Seiten
1.1 Verwendung der Querystring-Methode
QueryString wird auch Query-String genannt. Diese Methode hängt die zu übertragenden Daten an das Ende der Webseitenadresse (URL) an und überträgt diese. Um beispielsweise von Seite A.aspx zu Seite B.aspx zu springen, können Sie die Methode Request.Redirect("B.aspx? Parametername = Parameterwert") verwenden, oder Sie können den Hyperlink: verwenden, nachdem die Seite gesprungen ist , wird es auf der Zielseite verfügbar sein, um Parameter zu empfangen. Der Vorteil der Verwendung der QuerySting-Methode besteht darin, dass sie einfach zu implementieren ist und keine Serverressourcen beansprucht. Der Nachteil besteht darin, dass der übergebene Wert in der Adressleiste des Browsers angezeigt wird und die Gefahr einer Manipulation besteht Die Abfragezeichenfolge kann nur verwendet werden, wenn die Anforderung der Seite über die URL möglich ist.
1.2 Verwendung versteckter Felder
Ausgeblendete Felder werden im Browser des Benutzers nicht angezeigt. Im Allgemeinen wird der Seite ein ausgeblendetes Steuerelement hinzugefügt. Bei der Interaktion mit dem Server wird der Wert dem ausgeblendeten Steuerelement zugewiesen und an die nächste Seite übermittelt. Eine versteckte Domäne kann ein Repository aller auf einer Webseite gespeicherten Informationen sein, die für die Webseite relevant sind. Wenn Sie ein ausgeblendetes Feld zum Speichern eines Werts verwenden, verwenden Sie: „hidden control.value=numeric value“. Wenn Sie einen empfangenen Wert herausnehmen, verwenden Sie: „variable=hidden control.value“. Der Vorteil der Verwendung versteckter Felder besteht darin, dass sie einfach zu implementieren sind. Verborgene Felder sind Standard-HTML-Steuerelemente und erfordern keine komplexe Programmierlogik. Verborgene Felder werden auf der Seite gespeichert und gelesen, erfordern keine Serverressourcen und fast alle Browser und Clientgeräte unterstützen Formulare mit versteckten Feldern. Der Nachteil besteht darin, dass es nur wenige Speicherstrukturen hat und nur einfache Datenstrukturen unterstützt. Die Speicherkapazität ist gering, da sie auf der Seite selbst gespeichert ist, sodass keine größeren Werte gespeichert werden können und große Datenmengen durch Firewalls und Proxys blockiert werden.
1.3 ViewState
ViewState ist ein verstecktes Formularfeld, das vom ASP.NET-Seitenframework verwaltet wird. Wenn ASP.NET eine Seite ausführt, werden die ViewState-Werte und alle Steuerelemente auf der Seite gesammelt und in eine codierte Zeichenfolge formatiert und dann der Value-Eigenschaft des ausgeblendeten Formularfelds zugewiesen. Wenn Sie ViewState zum Übertragen von Daten verwenden, können Sie Folgendes verwenden: ViewState ["Variablenname"]=numerischer Wert. Beim Abrufen von Daten verwenden Sie: variable=ViewState["Variablenname"]. Die Vorteile der Verwendung von ViewState sind: Werte werden automatisch zwischen mehreren Anfragen für dieselbe Seite beibehalten, es sind keine serverseitigen Ressourcen erforderlich und die Implementierung ist einfach. Die Werte im Ansichtsstatus werden gehasht und komprimiert Für die Unicode-Implementierung codiert und ihre Sicherheit höher als die Verwendung eines versteckten Felds. Der Nachteil besteht darin, dass der Benutzer beim Speichern der Seite und beim Senden der Seite möglicherweise langsamer wird, da ViewState auf der Seite selbst gespeichert wird . Obwohl View State Daten im Hash-Format speichert, können sie dennoch manipuliert werden.
1.4 Verwendung von Cookies
Cookies können eine kleine Menge an Informationen zwischen Seiten übertragen und in einer Textdatei auf dem Client oder im Speicher des Clients gespeichert werden. Die Cookie-Methode eignet sich zum Speichern von Informationen, die sich auf einer kleinen Anzahl von Seiten häufig ändern, z. B. zum Speichern von Login-Benutzernamen für angemeldete Websites, zur Bereitstellung von Komfort für Benutzereingaben und zum Speichern personalisierter Einstellungen von Benutzern für einige benutzerdefinierte Elemente. Verfügbar bei Verwendung von Cookies zum Übertragen von Daten: Response.Cookies["Schlüsselname"]=Schlüsselwert; zum Abrufen von Daten: Variablenname=Request.Cookies["Schlüsselname"]. Die Vorteile der Verwendung von Cookies sind: Cookies werden auf dem Client gespeichert, beanspruchen keine Serverressourcen, sind einfach zu implementieren und können die Ablaufzeit konfigurieren. Nachteile: Die speicherbare Datenmenge ist relativ gering. Da Cookies nicht von allen Browsern unterstützt werden und von Benutzern möglicherweise verboten oder gelöscht werden, können sie nicht zum Speichern kritischer Daten verwendet werden. Darüber hinaus werden Cookies im einfachen Klartext gespeichert und es ist nicht angebracht, sensible, unverschlüsselte Daten darin zu speichern.
1.5 Verwendung von Anwendungsvariablen
Anwendungsvariablen können auch zum Übertragen von Werten zwischen Seiten verwendet werden. Anwendungsvariablen sind global und alle Benutzer teilen sich eine Anwendungsvariable. Sobald sie definiert ist, wirkt sie sich auf alle Teile des Programms aus. Wenn Sie einen bestimmten Variablenwert in der gesamten Anwendung verwenden möchten, ist das Anwendungsobjekt die beste Wahl. Fügen Sie beim Speichern von Daten den Wert zur Anwendungsvariablen hinzu: Application["Variablenname"]=numerischer Wert; verwenden Sie ihn zum Abrufen von Daten: variable=Application["Variablenname"]; wenn Sie die Anwendung nicht verwenden müssen, löschen Sie sie explizit :Application["quantity name"]=null.
Anwendungsvorteile: Einfach zu bedienen, globaler Anwendungsbereich. Verfügbar für alle Seiten in der Anwendung. Nachteile: Wenn der serverseitige Prozess, der Daten speichert, beschädigt wird (z. B. aufgrund eines Serverabsturzes, eines Upgrades oder eines Herunterfahrens), gehen die Daten verloren. Daher müssen Sie eine garantierte Strategie haben, wenn die Anwendung den serverseitigen Speicher belegt , was sich auf die Serverleistung und die Skalierbarkeit der Anwendung auswirken kann.
1.6 Verwendung von Sitzungsvariablen
Sitzungsobjekte können zum Speichern von Informationen zu bestimmten Konversationen verwendet werden, die gepflegt werden müssen. Verschiedene Clients generieren unterschiedliche Sitzungsobjekte. Sitzung wird verwendet, um kurzfristige Informationen zu speichern, die für eine einzelne Sitzung spezifisch sind. Die Verwendung und das Format der Sitzung sind die gleichen wie bei der Anwendung.
Vorteile: Es ist einfach zu implementieren, bietet hohe Sicherheit und Haltbarkeit, kann IIS-Neustarts und Hilfsprozess-Neustarts bewältigen und kann in mehreren Prozessen verwendet werden. Der Nachteil besteht darin, dass serverseitiger Speicher verbraucht wird. Speichern Sie also nicht viele Informationen. Die häufigste Verwendung von Session ist die Bereitstellung von Benutzeridentifikationsfunktionen für Webanwendungen zusammen mit Cookies. Sessions können auch in Browsern verwendet werden, die keine Cookies unterstützen. Die Verwendung einer Cookie-freien Sitzung erfordert jedoch die Platzierung der Sitzungskennung in der Abfragezeichenfolge, was ebenfalls unter den im Abschnitt zur Abfragezeichenfolge dieses Artikels genannten Sicherheitsproblemen leidet.
1.7 Verwendung statischer Eigenschaften von Klassen
Diese Methode verwendet die statischen Eigenschaften der Klasse, um Werte zwischen den beiden Seiten zu übertragen. Definieren Sie eine Klasse, die statische Attribute enthält. Weisen Sie den zu übertragenden Wert dem statischen Attribut zu. Die Zielseite kann den zu übertragenden Wert auf der Quellseite über das statische Attribut erhalten.
Der Vorteil besteht darin, dass problemlos mehrere Daten übertragen werden können. Der Nachteil besteht jedoch darin, dass zusätzliche Programmierung erforderlich ist, der Programmieraufwand erhöht ist und Serverspeicher beansprucht wird.
1.8 Verwendung von Server.Transfer
Beim Übertragen des Ausführungsflusses von der aktuellen ASPX-Datei auf eine andere ASPX-Seite auf demselben Server können die Formulardaten oder die Abfragezeichenfolge beibehalten werden. Die Methode besteht darin, den zweiten Parameter der Methode auf True zu setzen Die erste Seite verwendet Server.Transfer("Zielseitenname.aspx", true); die Zielseite verwendet: Ruquest.Form["Steuerelementname"] oder Ruquest.QueryString["Steuerelementname"], um Daten abzurufen. Es kann auch wie folgt in Asp.net2.0 verwendet werden. Der Code lautet wie folgt:
Vorherige Seite pg1;
pg1=(VorherigeSeite)Context.Handler;
Response.Write(pg1.Name);
Erläuterung: Dieser Code wird verwendet, um den übergebenen Wert von der Zielseite abzurufen. Vorherige Seite ist der Klassenname der Originalseite, Name ist das auf der Originalseite definierte Attribut und die zu übertragenden Daten werden darin gespeichert Attribut.
Mit dieser Methode müssen Sie Code schreiben, um einige Eigenschaften zu erstellen, damit Sie von einer anderen Seite darauf zugreifen können. Sie können auf den Wert als Objekteigenschaft auf einer anderen Seite zugreifen. Diese Methode ist nicht nur einfach, sondern auch objektorientiert.
1.9 Cache
Der Cache verfügt über leistungsstarke Datenoperationsfunktionen. Er speichert Daten in Form einer Sammlung von Schlüssel-Wert-Paaren, die durch Angabe von Schlüsselwörtern eingefügt und abgerufen werden können. Seine abhängigkeitsbasierten Beendigungsfunktionen ermöglichen eine präzise Steuerung, wie Daten im Cache zeitnah aktualisiert und gelöscht werden. Es kann die Sperrverwaltung intern durchführen und muss nicht wie das Anwendungsobjekt die Methoden Lock() und Unlock() für die Serialisierungsverwaltung verwenden. Der Nachteil besteht darin, dass die Verwendungsmethode kompliziert ist und eine unsachgemäße Verwendung die Leistung beeinträchtigt.
2. Wertübertragungsmethoden, die in verschiedenen Seitensprungsituationen verwendet werden können
2.1 Szenario 1: Die Quellseite kann zur Zielseite springen und die Quellseite übergibt Daten an die Zielseite.
Die Verwendung von Abfragezeichenfolgen ist eine einfache und häufig verwendete Methode, um eine kleine Menge an Informationen von einer Seite auf eine andere zu übertragen. Es gibt keine Sicherheitsprobleme. Verwenden Sie die Server.Transfer-Methode, um Formulardaten oder Abfragezeichenfolgen an eine andere Seite zu übergeben der HttpContext der Startseite. Diese Methode kann verwendet werden, wenn sich die Zielseite und die Quellseite auf demselben Server befinden.
2.2 Fall 2: Die Seite übergibt den Wert an ihre eigene Seite
Das heißt, durch die Beibehaltung von Werten über mehrere Anfragen für dieselbe Seite hinweg bietet die ViewState-Eigenschaft Funktionalität mit grundlegender Sicherheit. Verborgene Felder können auch verwendet werden, um eine kleine Menge an Seiteninformationen zu speichern, die auf sich selbst oder eine andere Seite zurückgesendet werden, und werden verwendet, wenn Sicherheitsprobleme nicht berücksichtigt werden.
2.3 Fall 3: Die Quellseite übergibt Werte an die Zielseite, aber die Quellseite kann nicht direkt mit der Zielseite verbunden werden.
Es gibt mehrere Methoden, und welche verwendet wird, hängt von der jeweiligen Situation ab.
Anwendung: Speichert globale Informationen, die von mehreren Benutzern verwendet werden und selten geändert werden, wenn die Sicherheit kein Problem darstellt. Speichern Sie keine großen Mengen an Informationen. Sitzung: Speichert kurzfristige Informationen, die spezifisch für eine einzelne Sitzung sind und hohe Sicherheit erfordern. Speichern Sie keine großen Informationsmengen im Sitzungsstatus. Beachten Sie, dass Sitzungsstatusobjekte für die gesamte Lebensdauer jeder Sitzung in der Anwendung erstellt und verwaltet werden. Bei Anwendungen, die viele Benutzer unterstützen, kann dies erhebliche Serverressourcen beanspruchen und die Skalierbarkeit beeinträchtigen.
Cookies: Werden verwendet, wenn Sie eine kleine Menge an Informationen auf der Clientseite speichern müssen und keine Sicherheitsprobleme bestehen. Statische Attribute der Klasse erleichtern die Übertragung mehrerer Daten.
Cache: Objekt für einen einzelnen Benutzer, eine Gruppe von Benutzern oder alle Benutzer. Daten können für mehrere Anfragen langfristig und effizient gespeichert werden. Die oben genannten Methoden werden nicht nur im dritten Fall verwendet, sondern auch in den beiden vorherigen Fällen. Verwenden Sie sie einfach so wenig wie möglich, wenn sie nicht erforderlich sind, da dies sonst zu einer Verschwendung von Ressourcen führt oder die Komplexität des Programms erhöht.