Dans cet article, nous aborderons plusieurs méthodes de transfert de données entre les pages ASP.NET. Nous espérons que cela aidera tout le monde à comprendre correctement l'utilité et la commodité du transfert de données entre les pages ASP.NET.
0. Introduction
Les pages Web sont sans état. Le serveur considère que chaque requête provient d'un utilisateur différent. Par conséquent, l'état des variables ne sera pas conservé entre plusieurs requêtes consécutives pour la même page ou lorsque la page saute. Lors de la conception et du développement d'un système Web avec ASP.NET, un problème important rencontré est de savoir comment garantir que les données sont transmises correctement, en toute sécurité et efficacement entre les pages. Asp.net fournit une variété de technologies telles que la gestion d'état pour résoudre le problème de préservation. et la transmission. Concernant les problèmes de données, explorons les différentes méthodes pour résoudre ce problème sous .NET et leurs occasions applicables respectives.
1. Diverses méthodes et analyses du transfert de données entre les pages ASP.NET
1.1 Utilisation de la méthode Querystring
QueryString est également appelée chaîne de requête. Cette méthode ajoute les données à transférer à la fin de l'adresse de la page Web (URL) et les transfère. Par exemple, pour passer de la page A.aspx à la page B.aspx, vous pouvez utiliser la méthode Request.Redirect("B.aspx? Nom du paramètre = valeur du paramètre"), ou vous pouvez utiliser le lien hypertexte :, après le saut de page , il sera disponible dans la page cible Ruquest["nom du paramètre"] pour recevoir les paramètres. L'avantage d'utiliser la méthode QuerySting est qu'elle est simple à mettre en œuvre et n'utilise pas de ressources du serveur ; l'inconvénient est que la valeur transmise sera affichée sur la barre d'adresse du navigateur, avec le risque d'être falsifiée, et l'objet ne pourra pas être transmis. La chaîne de requête ne peut être utilisée que lorsque la demande de la page via l'URL est possible.
1.2 Utiliser les champs masqués
Les champs masqués ne seront pas affichés dans le navigateur de l'utilisateur. Généralement, un contrôle masqué est ajouté à la page lors de l'interaction avec le serveur, la valeur est attribuée au contrôle masqué et soumise à la page suivante. Un domaine caché peut être un référentiel de toute information stockée dans une page Web pertinente pour la page Web. Lorsque vous utilisez un champ masqué pour stocker une valeur, utilisez : caché control.value=numeric value. Lors de la suppression d'une valeur reçue, utilisez : variable=hidden control.value. L'avantage de l'utilisation de champs masqués est qu'ils sont simples à mettre en œuvre. Les champs masqués sont des contrôles HTML standards et ne nécessitent pas de logique de programmation complexe. Les champs masqués sont stockés et lus sur la page, ne nécessitent aucune ressource du serveur et presque tous les navigateurs et appareils clients prennent en charge les formulaires avec des champs masqués. L'inconvénient est qu'il a peu de structures de stockage et ne prend en charge que des structures de données simples. La capacité de stockage est petite car elle est stockée dans la page elle-même, elle ne peut donc pas stocker de valeurs plus grandes et de grandes quantités de données seront bloquées par les pare-feu et les proxys.
1.3 État de vue
ViewState est un champ de formulaire masqué géré par le framework de pages ASP.NET. Lorsqu'ASP.NET exécute une page, les valeurs ViewState et tous les contrôles de la page sont collectés et formatés dans une chaîne codée, puis attribués à la propriété Value du champ de formulaire masqué. Lorsque vous utilisez ViewState pour transférer des données, vous pouvez utiliser : ViewState ["nom de la variable"]=valeur numérique Lors de la récupération des données, utilisez : variable=ViewState["nom de la variable"]. Les avantages de l'utilisation de ViewState sont les suivants : les valeurs sont automatiquement conservées entre plusieurs requêtes pour la même page, aucune ressource côté serveur n'est nécessaire et la mise en œuvre est simple. Les valeurs dans l'état d'affichage sont hachées et compressées. codés pour l'implémentation Unicode, et leur sécurité nécessite plus élevée que l'utilisation d'un champ caché ; l'inconvénient est que, étant donné que ViewState est stocké dans la page elle-même, si une valeur plus grande est stockée, l'utilisateur peut être ralenti lors de l'affichage et de l'envoi de la page. . Bien que l'état d'affichage stocke les données au format haché, elles peuvent toujours être falsifiées.
1.4 Utilisation des cookies
Les cookies peuvent transférer une petite quantité d'informations entre les pages et peuvent être stockés dans un fichier texte sur le client ou dans la mémoire du client. La méthode Cookie convient au stockage d'informations qui changent fréquemment dans un petit nombre de pages, telles que l'enregistrement des noms d'utilisateur de connexion pour les sites Web connectés, la commodité de la saisie de l'utilisateur et l'enregistrement des paramètres personnalisés des utilisateurs sur certains éléments définis par l'utilisateur. Disponible lors de l'utilisation de cookies pour transférer des données : Response.Cookies["key name"]=key value ; pour récupérer des données : variable name=Request.Cookies["key name"]. Les avantages de l'utilisation des cookies sont les suivants : Les cookies sont stockés sur le client, n'utilisent pas les ressources du serveur, sont simples à mettre en œuvre et peuvent configurer le délai d'expiration. Inconvénients : La quantité de données pouvant être stockée est relativement faible. Étant donné que les cookies ne sont pas pris en charge par tous les navigateurs et peuvent être interdits ou supprimés par les utilisateurs, ils ne peuvent pas être utilisés pour enregistrer des données critiques. De plus, les cookies sont stockés sous forme de texte simple et il n'est pas approprié d'y stocker des données sensibles et non cryptées.
1.5 Utilisation des variables d'application
Les variables d'application peuvent également être utilisées pour transférer des valeurs entre les pages. Les variables d'application sont globales et tous les utilisateurs partagent une variable d'application. Une fois définie, elle affectera toutes les parties du programme. Si vous souhaitez utiliser une certaine valeur de variable dans l'ensemble de l'application, l'objet Application serait le meilleur choix. Lors du stockage des données, ajoutez la valeur à la variable Application : Application["nom de la variable"]=valeur numérique ; utilisez pour récupérer les données : variable=Application["nom de la variable"] lorsque vous n'avez pas besoin d'utiliser l'application, effacez-la. explicitement :Application["quantity name"]=null.
Avantages de l'application : Facile à utiliser, portée mondiale. Disponible sur toutes les pages de l'application. Inconvénients : si le processus côté serveur qui enregistre les données est endommagé (par exemple en raison d'une panne, d'une mise à niveau ou d'un arrêt du serveur), les données seront perdues. Vous devez donc avoir une stratégie garantie lorsque vous utilisez l'application, elle occupe la mémoire côté serveur ; , ce qui peut affecter les performances du serveur et l'évolutivité des applications.
1.6 Utilisation des variables de session
Les objets de session peuvent être utilisés pour stocker des informations sur les conversations spécifiées qui doivent être gérées. Différents clients génèrent différents objets de session. La session est utilisée pour stocker des informations à court terme spécifiques à une session individuelle. L'utilisation et le format de la session sont les mêmes que ceux de l'application.
Avantages : il est facile à mettre en œuvre, offre une sécurité et une durabilité élevées, peut gérer le redémarrage d'IIS et le redémarrage de processus auxiliaires et peut être utilisé dans plusieurs processus. L’inconvénient est qu’il consomme de la mémoire côté serveur. Ne stockez donc pas beaucoup d’informations. L'utilisation la plus courante de Session consiste à fournir des fonctions d'identification d'utilisateur aux applications Web. Les sessions peuvent également être utilisées dans des navigateurs qui ne prennent pas en charge les cookies. Cependant, l'utilisation d'une session sans cookie nécessite de placer l'identifiant de session dans la chaîne de requête, ce qui souffre également des problèmes de sécurité indiqués dans la section sur la chaîne de requête de cet article.
1.7 Utilisation des propriétés statiques des classes
Cette méthode utilise les propriétés statiques de la classe pour transférer des valeurs entre les deux pages. Définissez une classe contenant des attributs statiques ; attribuez la valeur à transférer à l'attribut statique ; la page cible peut obtenir la valeur à transférer dans la page source via l'attribut statique.
L'avantage est qu'il peut facilement transmettre plusieurs données, mais l'inconvénient est qu'il nécessite une programmation supplémentaire, augmente la charge de travail de programmation et occupe la mémoire du serveur.
1.8 Utilisation de Server.Transfer
Lors du transfert du flux d'exécution du fichier ASPX actuel vers une autre page ASPX sur le même serveur via la méthode Server.Transfer, les données du formulaire ou la chaîne de requête peuvent être conservées. La méthode consiste à définir le deuxième paramètre de la méthode sur True. la première page utilise Server.Transfer("target page name.aspx", true) ; la page cible utilise : Ruquest.Form["Control Name"] ou Ruquest.QueryString["Control Name"] pour récupérer les données. Il peut également être utilisé dans Asp.net2.0 comme ceci, le code est le suivant :
Page précédente p. 1 ;
pg1=(Page précédente)Context.Handler;
Réponse.Write(pg1.Name);
Explication : Ce code est utilisé pour récupérer la valeur transmise à partir de la page cible. Page précédente est le nom de classe de la page d'origine, Nom est l'attribut défini sur la page d'origine et les données qui doivent être transférées y sont stockées. attribut.
En utilisant cette méthode, vous devez écrire du code pour créer des propriétés afin de pouvoir y accéder depuis une autre page. Vous pouvez accéder à la valeur en tant que propriété d'objet dans une autre page. Cette méthode est particulièrement utile pour transmettre des valeurs entre les pages. Cette méthode est non seulement simple, mais également orientée objet.
1.9 Cache
Le cache dispose de puissantes fonctions d'exploitation des données. Il stocke les données sous la forme d'un ensemble de paires clé-valeur qui peuvent être insérées et récupérées en spécifiant des mots-clés. Ses capacités de terminaison basées sur les dépendances lui permettent de contrôler précisément la manière dont les données du cache sont mises à jour et éliminées en temps opportun. Il peut effectuer la gestion des verrous en interne et n'a pas besoin d'utiliser les méthodes Lock() et Unlock() pour la gestion de la sérialisation comme l'objet Application. L'inconvénient est que la méthode d'utilisation est compliquée et qu'une mauvaise utilisation réduira les performances.
2. Méthodes de transfert de valeur pouvant être utilisées dans différentes situations de saut de page
2.1 Scénario 1 : la page source peut accéder à la page cible et la page source transmet les données à la page cible.
L'utilisation de chaînes de requête est une méthode simple et couramment utilisée pour transférer une petite quantité d'informations d'une page à une autre et il n'y a aucun problème de sécurité ; utilisez la méthode Server.Transfer pour transmettre des données de formulaire ou des chaînes de requête vers une autre page. le HttpContext de la page initiale. Cette méthode peut être utilisée lorsque la page cible et la page source sont sur le même serveur.
2.2 Cas 2 : La page transmet la valeur à sa propre page
Autrement dit, en conservant les valeurs sur plusieurs requêtes pour la même page, la propriété ViewState fournit des fonctionnalités avec une sécurité de base. Les champs masqués peuvent également être utilisés pour stocker une petite quantité d'informations sur la page qui sont publiées sur elle-même ou sur une autre page, et sont utilisés lorsque les problèmes de sécurité ne sont pas pris en compte.
2.3 Cas 3 : La page source transmet des valeurs à la page cible, mais la page source ne peut pas être directement connectée à la page cible.
Il existe plusieurs méthodes et celle à utiliser dépend de la situation spécifique.
Application : stocke les informations globales utilisées par plusieurs utilisateurs et qui changent rarement, lorsque la sécurité n'est pas un problème. Ne stockez pas de grandes quantités d’informations. Session : stocke des informations à court terme spécifiques à une session individuelle et nécessitant une sécurité élevée. Ne stockez pas de grandes quantités d’informations en état de session. Notez que les objets d'état de session sont créés et conservés pendant toute la durée de vie de chaque session dans l'application. Dans les applications prenant en charge de nombreux utilisateurs, cela peut consommer des ressources serveur importantes et avoir un impact sur l'évolutivité.
Cookies : utilisés lorsque vous devez stocker une petite quantité d'informations côté client et qu'il n'y a aucun problème de sécurité. Les attributs statiques de la classe facilitent la transmission de plusieurs données.
Cache : objet pour un seul utilisateur, un groupe d'utilisateurs ou tous les utilisateurs. Les données peuvent être enregistrées pour plusieurs demandes pendant une longue période et efficacement. Les méthodes ci-dessus ne sont pas seulement utilisées dans le troisième cas, mais également dans les deux cas précédents. Utilisez-les simplement le moins possible lorsqu'elles ne sont pas nécessaires, sinon cela entraînerait un gaspillage de ressources ou augmenterait la complexité du programme.