Différence entre une publication et un rappel

116

Je n'arrête pas d'entendre ces mots « rappel » et « postback ».
Quelle est la différence entre deux?

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

Biswanath
la source

Réponses:

204

Un postback se produit lorsque les données (la page entière) sur la page sont postées du client au serveur..ie les données sont postées sur le serveur , et ainsi la page est actualisée (redessinée) ... pensez-y comme « envoyer au serveur toute la page (asp.net) pleine de données ».

D'un autre côté, un rappel est également un type spécial de publication , mais il s'agit simplement d'un aller-retour rapide vers le serveur pour obtenir un petit ensemble de données (normalement), et donc la page n'est pas actualisée, contrairement à la publication. ... Pensez-y comme « appeler le serveur et recevoir des données en retour ».

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

La raison pour laquelle la page entière est publiée avec ASP.Net est parce que ASP.Net entoure la page entière dans une méthode<form> avec une publication , et ainsi, lorsqu'un bouton d'envoi est cliqué dans la page, le formulaire est envoyé au serveur avec tous les les champs qui sont dans le formulaire ... essentiellement la page entière elle-même.

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


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

Cycles de vie des pages ASP.NET
(source: esri.com )

Andreas Grech
la source
18
En fait, un rappel est un terme de programmation plus général pour une fonction qui doit être exécutée après qu'une autre fonction est terminée.
Ryan Doherty
1
C'est quand un pointeur vers une fonction est passé à une autre fonction, qu'il sera appelé plus tard
Andreas Grech
18

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

Un rappel, généralement utilisé avec AJAX, se produit lorsqu'une requête 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

Sanket
la source
5

Je suis d'accord avec la réponse de Dreas, mais j'aimerais ajouter quelques points. La publication est un terme qui a été introduit très récemment par la programmation ASP .NET comme l'expliquait Dreas, alors que la fonction de rappel est plus générique et a été utilisée bien avant le développement Web. En fait, j'ai entendu parler du rappel pour la première fois à l'époque où j'ai commencé à programmer en C (peut-être que le terme existait avant cela, 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 ce B) qui invoquera plus tard A. Le rappel est également récemment utilisé par Yahoo UI Connection Manager et d'autres frameworks Ajax, mais je crois que le terme a eu sa première utilisation à l'époque C.

Kevin Le - Khnle
la source
4

Une grande partie de cette discussion est en langage ASP.NET gobbledygook ....

La réponse est oui. La publication est un «terme» spécifique à ASP.NET de Microsoft. Mais rappelez-vous que les fournisseurs comme Microsoft enveloppent leurs PROPRES versions de ces processus autour de leurs propres implémentations, nous déroutant tous quant à ce qui se passe VRAIMENT dans le monde Http / Html.

Leur version de POSTBACK est essentiellement 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 HTML FORM (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 infime partie d'une page Web. Ils font cela parce qu'ils utilisent la spécification HTTP pour maintenir «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, revient intacte.

Malheureusement, cela envoie une énorme quantité de données non nécessaires sur le fil, de sorte que leur VIEWSTATE et sa sœur POSTBACK dans la page en sont venus à être considérés par beaucoup comme un gaspillage de bande passante et une manière bâclée d'implémenter l'état de la page Web. Je peux vous montrer que la plupart des navigateurs et sites Web modernes, s'ils sont conçus à l'aide de CSS pouvant être mis en cache et d'un balisage HTML cohérent, renverront l'état de la page tout naturellement en utilisant le cache HTML natif des navigateurs. c'est-à-dire que le POSTBACK complet est souvent inutile.

CALLBACK est juste du JavaScript. Son juste ECMASCRIPT fait des tours de cirque ASP.NET stocke dans ce qu'ils appellent leur API AJAX dans de gigantesques bibliothèques JavaScript que votre navigateur télécharge à partir du serveur, et que les développeurs ASP.NET emballent sans le savoir dans leurs pages Web pour déclencher des changements dans une page Web sans POSTBACK complet. L'API ASP.NET pour AJAX crée simplement tout ce Javascript massif qui se trouve du côté client et qui est déclenché dans le navigateur lorsque l'utilisateur change quelque chose, survole quelque chose ou clique sur quelque chose dans le navigateur, déclenchant des événements DOM de navigateur JavaScript traditionnels, qui renvoie ensuite une charge géante de JSON ou d'autres données au serveur pour traitement. Cela est ensuite retourné et accepté par les bibliothèques et objets Javascipted en mémoire dans le navigateur, et modifie certaines parties de la page Web et du balisage des utilisateurs.

Il est dit qu'environ 5 à 10% des utilisateurs et des navigateurs ont désactivé Javascript, de sorte que tous ces JSON et AJAX planteraient et brûleraient pour ces personnes. c'est-à-dire que CALLBACK ne fonctionnerait pas.

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

Si vous avez abandonné ASP.NET pendant une seconde, vous pouvez écrire vous-même un champ FORM simple dans une page Web HTML avec une seule zone de texte et un seul bouton et appuyer dessus et le regarder publier sur le serveur, exactement comme le ferait une page ASP.NET mais plus rapide et plus simple. C'est ce qu'est le vrai POSTBACK. Le navigateur envoie naturellement au serveur l'en-tête HTTP POST nécessaire pour ce faire, mais met en cache le code HTML dans le reste de la page, de sorte qu'il est rendu rapide par lui-même.

Pour CALLBACK, vous pouvez simplement ajouter un simple code Javascript / ECMAScript à cette même page HTML où, lorsque l'utilisateur survole un texte ou un bouton, clique ou modifie un champ de formulaire, la page Web ne POST PAS, mais dans les coulisses vous que Javascript envoie quelque chose au serveur. La façon dont vous gérez cela via votre propre JavaScript, JSON ou vos bibliothèques est une autre affaire. Mais ce n'est pas magique. Pour les personnes sans Javascipt ou Javascript désactivé, vous devez concevoir des pages sans CALLBACK et simplement mettre en cache toutes les modifications qui reviennent lorsque des contrôles de champ de formulaire ou des hyperliens sont cliqués. C'est une raison pour 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 déroute les gens ...... ces implémentations de fournisseurs de requêtes HTTP très basiques 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 font toutes ces choses inutiles qu'un codage très simple résoudrait.

J'utilise toujours et recommande ASP.NET. C'est un long chemin et un excellent système. Mais cela aiderait si plus de gens comprenaient les bases de ce qu'ils 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 vraiment sous le capot.

Stokely
la source
0

Une publication se produit lorsqu'une demande est envoyée à un serveur, il n'est pas 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

Andreas Grech
la source
0

Une publication est également un aller-retour lorsqu'une publication est exécutée à ce moment-là, elle appelle la méthode spéciale qui est connue sous le nom d'aller-retour .. La publication est du côté serveur alors que l'aller-retour est du côté du client.

rohit
la source