web-dev-qa-db-fra.com

Différence entre un postback et un rappel

Je continue à entendre ces mots 'rappel' et 'postback' balancés.
Quelle est la différence entre deux?

La publication est-elle très spécifique aux pages ASP.NET?

114
Biswanath

Une publication a lieu lorsque les données (la page entière) de la page sont publiées du client sur le serveur. Ainsi, les données sont renvoyées au serveur , et donc la page est rafraîchie (redessinée) ... pensez-la comme ' en envoyant au serveur la page entière (asp.net) pleine de données '.

D'autre part, un rappel est également un type spécial de publication , mais il ne s'agit que d'un rapide aller-retour vers le serveur pour obtenir un petit ensemble. de données (normalement), et donc la page n'est pas rafraîchie, contrairement à la publication (postback) ... imaginez-la comme ' appelant le serveur et recevant un peu = données en retour '.

Avec Asp.Net, , l'état de ViewState n'est pas actualisé lorsqu'un rappel est appelé , contrairement à une publication.

La raison pour laquelle toute la page est publiée avec ASP.Net est qu’ASP.Net englobe toute la page dans un fichier <form> avec une méthode de publication , ainsi lorsqu'un clic sur le bouton d'envoi est cliqué dans la page, le formulaire est envoyé au serveur avec tous les champs sont sous la forme ... essentiellement la page entière elle-même.

Si vous utilisez FireBug (pour Firefox), vous pouvez réellement voir les rappels invoqués sur le serveur dans le Console. De cette façon, vous verrez quelles données spécifiques sont envoyées au serveur (Request) ainsi que les données que le serveur vous a renvoyées (Response).


L'image ci-dessous illustre les cycles de vie d'une page et d'un rappel dans un site Web basé sur ASP.NET:

ASP.NET Page Life Cycles
(source: esri.com )

201
Andreas Grech

Une publication a lieu lorsqu'une demande est envoyée du client au serveur pour la même page que celle actuellement affichée par l'utilisateur. Lorsqu'une publication est postée, la page entière est actualisée et vous pouvez voir la progression typique sur la barre de progression au bas du navigateur.

Un rappel, généralement utilisé avec AJAX, se produit lorsqu'une demande est envoyée du client au serveur pour lequel la page n'est pas actualisée, seule une partie de celle-ci est mise à jour sans aucun scintillement sur le navigateur.

18
Sanket

Je suis d'accord avec la réponse de Dreas, mais j'aimerais ajouter quelques points. Postback est un terme qui a été introduit très récemment par ASP. Programmation .NET comme Dreas l'a expliqué, alors que callback est plus générique et a été utilisé bien avant le développement Web. En fait, j'ai d'abord entendu parler de callback à l'époque où j'ai commencé à programmer en C (peut-être que le terme existait avant, je ne sais pas) et cela signifie simplement un pointeur vers une fonction et ce pointeur vers une fonction (nommez ce A) est passé à une autre fonction (nommez ceci B) qui invoquera plus tard A. Callback est également utilisé récemment par Yahoo UI Connection Manager et d’autres frameworks Ajax, mais je crois que le terme a été utilisé pour la première fois à l’ancien C jours.

5
Kevin Le - Khnle

Une grande partie de cette discussion porte sur le langage gobbledygook ASP.NET ....

La réponse est oui. La publication est un "terme" spécifique à ASP.NET de Microsoft. Mais rappelez-vous, les éditeurs tels que Microsoft encapsulent leurs propres versions de ces processus autour de leur propre implémentation, nous induisant en erreur sur ce qui se passe réellement dans le monde Http/Html.

Leur version de POSTBACK est fondamentalement une requête HTTP POST traditionnelle renvoyée au serveur d'origine. Mais dans ASP.NET, ils le font en collant une gigantesque balise d'élément FORM HTML (avec l'attribut de méthode POST) autour de la page Web entière plutôt que des contrôles de formulaire traditionnels dans une toute petite partie d'une page Web. Ils le font parce qu’ils utilisent la spécification HTTP pour conserver "l’état" de leur page et de ses contrôles, et pour s’assurer que la page entière, même le balisage de champ non-formulaire traditionnel, reste intacte.

Malheureusement, cela envoie une énorme quantité de données non vérifiées sur le réseau, de sorte que leur VIEWSTATE et son frère, POSTBACK dans la page, ont fini par être considérés par beaucoup comme un gaspillage de bande passante et une manière bâclée d'implémenter l'état d'une page Web. Je peux vous montrer que la plupart des navigateurs et des sites Web modernes, s'ils sont conçus à l'aide de CSS cacheable et d'un balisage HTML cohérent, retourneront l'état de la page de manière tout à fait naturelle en utilisant le cache HTML natif des navigateurs. C'est-à-dire qu'un POSTBACK complet est souvent inutile.

CALLBACK est juste JavaScript. Ce ne sont que des trucs de cirque ECMASCRIPT ASP.NET stocke dans ce qu’ils appellent leur API AJAX dans de gigantesques bibliothèques JavaScript que votre navigateur télécharge sur le serveur, et que les développeurs ASP.NET regroupent sans le savoir dans leurs pages Web pour provoquer des modifications dans un fichier. page Web sans POSTBACK complet. L’API ASP.NET pour AJAX ne fait que créer tout ce vaste javascript qui se trouve côté client et qui se déclenche dans le navigateur lorsque l’utilisateur change quelque chose, le survole ou clique dans le navigateur pour déclencher une opération classique. Événements DOM du navigateur JavaScript, qui expédient ensuite une charge gigantesque de JSON ou d’autres données sur le serveur à traiter. Celle-ci est ensuite renvoyée et acceptée par les bibliothèques et objets javasciptés en mémoire dans le navigateur, et modifie des parties de la page Web et du balisage des utilisateurs.

Il a été dit que 5 à 10% des utilisateurs et des navigateurs avaient Javascript désactivé, donc tout ce JSON et AJAX plantait et brûlait pour ces personnes. c'est-à-dire que CALLBACK ne fonctionnerait pas.

C'est ce qui se passe dans les coulisses. Une grande partie est excessive, si vous me le demandez. Et c’est pourquoi les modèles de contrôle Web dans ASP.NET ont été critiqués par le passé.

Si vous avez abandonné ASP.NET pendant une seconde, vous pouvez écrire vous-même un simple champ FORM dans une page Web HTML avec un seul champ de texte et un seul bouton. Appuyez-le et regardez-le sur le serveur, exactement comme le ferait une page ASP.NET. plus rapide et plus simple. C'est ce que le vrai POSTBACK est. Le navigateur envoie naturellement le serveur POST _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nécessaire pour le faire, mais met en cache le code HTML dans le reste de la page, de sorte qu'il s'affiche rapidement.

Pour CALLBACK, vous pouvez simplement ajouter un simple code Javascript/ECMAScript à cette même page HTML. Lorsque l'utilisateur survole un texte ou un bouton, clique sur un bouton ou modifie un champ de formulaire, la page Web ne s'affiche pas, mais en coulisse faire en sorte que Javascript envoie quelque chose au serveur. Une autre affaire est de savoir comment gérer cela via votre propre JavaScript, JSON ou vos bibliothèques. Mais ce n'est pas magique. Pour les personnes sans javascipt ou Javascript désactivé, vous devez concevoir des pages sans CALLBACK et mettre en cache toutes les modifications renvoyées lorsque vous cliquez sur les champs ou sur les liens hypertexte. C'est l'une des raisons pour lesquelles il faut reconsidérer les routines de rappel, bien que la plupart des agents utilisateurs modernes soient désormais configurés pour les routines de site Web ECMAScripted.

C’est ce qui confond les gens ...... ces implémentations de fournisseurs de requêtes HTTP très élémentaires et d’astuces Javascript sont superposées dans un langage qui n’est pas clair. Cela amène ensuite les gens à créer des applications Web monstrueuses qui exécutent toutes ces tâches inutiles qu'un code très simple résoudrait.

J'utilise toujours et recommande ASP.NET. C'est venu un long chemin et un excellent système. Mais il serait utile que davantage de personnes comprennent les bases de ce qu’elles font avant de les utiliser, car ces cadres peuvent être personnalisés et simplifiés un peu pour les améliorer si vous voyez ce qui se passe réellement sous le capot.

3
Stokely

Une publication est également un aller-retour. En principe, une publication est exécutée à ce moment-là. Elle appelle la méthode spéciale appelée aller-retour .. La post-publication est du côté du serveur, tandis que l'aller-retour est du côté du client.

0
rohit

Une publication a lieu lorsqu'une demande est envoyée à un serveur sans qu'il soit nécessaire de donner des détails sur la sécurité pour chaque demande.

Lorsque vous faites une demande pour l’autre page, le rappel est utilisé par le serveur

0
yaseen