Unterschied zwischen einem Postback und einem Callback


116

Ich höre immer wieder die Worte " Rückruf " und " Rückruf ".
Was ist der Unterschied zwischen zwei?

Ist Postback sehr spezifisch für die ASP.NET-Seiten?

Antworten:


204

Ein Postback tritt auf, wenn die Daten (die gesamte Seite) auf der Seite vom Client auf den Server gesendet werden. Das heißt, die Daten werden auf den Server zurückgesendet , und daher wird die Seite aktualisiert (neu gezeichnet). Denken Sie daran als ' dem Server die ganze Seite (asp.net) voller Daten senden '.

Auf der anderen Seite ist ein Rückruf auch eine besondere Art von Postback , aber es ist nur eine kurze Hin- und Rückfahrt zum Server, um (normalerweise) einen kleinen Datensatz zu erhalten, und daher wird die Seite im Gegensatz zum Postback nicht aktualisiert ... stellen Sie sich vor, Sie rufen den Server an und erhalten einige Daten zurück .

Bei Asp.Net wird der ViewState im Gegensatz zu einem Postback beim Aufrufen eines Rückrufs nicht aktualisiert .

Der Grund dafür, dass die gesamte Seite mit ASP.Net gepostet wird, liegt darin, dass ASP.Net die gesamte Seite <form>mit einer Post-Methode einschließt. Wenn Sie also auf eine Senden-Schaltfläche auf der Seite klicken, wird das Formular mit allen an den Server gesendet die Felder, die in der Form sind ... im Grunde die ganze Seite selbst.

Wenn Sie FireBug (für Firefox) verwenden, können Sie tatsächlich sehen, dass Rückrufe auf den Server in der aufgerufen werden Console. Auf diese Weise sehen Sie, welche spezifischen Daten an den Server gesendet werden ( Request) und welche Daten der Server Ihnen zurückgesendet hat ( Response).


Das folgende Bild zeigt die Seitenlebenszyklen eines Postbacks und eines Rückrufs auf einer ASP.NET-basierten Website:

Lebenszyklen von ASP.NET-Seiten
(Quelle: esri.com )


18
Tatsächlich ist ein Rückruf ein allgemeinerer Programmierbegriff für eine Funktion, die ausgeführt werden muss, nachdem eine andere Funktion abgeschlossen wurde.
Ryan Doherty

1
Wenn ein Zeiger auf eine Funktion an eine andere Funktion übergeben wird, wird er später aufgerufen
Andreas Grech


18

Ein Postback tritt auf, wenn eine Anfrage vom Client an den Server für dieselbe Seite gesendet wird, die der Benutzer gerade anzeigt. Wenn ein Postback auftritt, wird die gesamte Seite aktualisiert und Sie können den typischen Fortschritt in der Fortschrittsanzeige unten im Browser sehen.

Ein Rückruf, der normalerweise bei AJAX verwendet wird, tritt auf, wenn eine Anforderung vom Client an den Server gesendet wird, für den die Seite nicht aktualisiert wird. Nur ein Teil davon wird aktualisiert, ohne dass im Browser ein Flackern auftritt


5

Ich stimme der Antwort von Dreas zu, möchte aber ein paar Punkte hinzufügen. Postback ist ein Begriff, der erst kürzlich von der ASP .NET-Programmierung eingeführt wurde, wie Dreas erklärte, während Callback allgemeiner ist und bereits lange vor der Webentwicklung verwendet wurde. Tatsächlich hörte ich zum ersten Mal von Rückrufen in den Tagen, als ich mit dem Programmieren in C begann (vielleicht existierte der Begriff vorher, ich weiß es nicht) und es bedeutet einfach einen Zeiger auf eine Funktion und diesen Zeiger auf eine Funktion (benenne dieses A) wird an eine andere Funktion (Name dieses B) übergeben, die später A aufruft. Callback wird kürzlich auch von Yahoo UI Connection Manager und anderen Ajax-Frameworks verwendet, aber ich glaube, der Begriff wurde bereits in den alten C-Tagen zum ersten Mal verwendet.


4

Ein Großteil dieser Diskussion ist ASP.NET GobbledyGook-Sprache ....

Die Antwort ist ja. Postback ist ein "Begriff", der für Microsoft ASP.NET spezifisch ist. Denken Sie jedoch daran, dass Anbieter wie Microsoft ihre EIGENEN Versionen dieser Prozesse um ihre eigenen Implementierungen wickeln, was uns alle verwirrt, was WIRKLICH in der HTTP / HTML-Welt passiert.

Ihre Version von POSTBACK ist im Grunde eine herkömmliche HTTP-POST-Anforderung, die an den Ursprungsserver zurückgesendet wird. In ASP.NET wird jedoch ein gigantisches FORM-HTML-Element-Tag (mit POST-Methodenattribut) um die gesamte Webseite geklebt, anstatt herkömmliche Formularsteuerelemente in einem winzigen Teil einer Webseite. Sie tun dies, weil sie die HTTP-Spezifikation verwenden, um den "Status" ihrer Seite und ihrer Steuerelemente beizubehalten und um sicherzustellen, dass die gesamte Seite, auch das herkömmliche Nicht-Formular-Feld-Markup, intakt bleibt.

Leider sendet dies eine RIESIGE Menge unnötiger Daten über das Kabel, so dass ihr VIEWSTATE und seine Schwester POSTBACK auf der Seite von vielen als Verschwendung von Bandbreite und als schlampige Art der Implementierung des Webseitenstatus angesehen werden. Ich kann Ihnen zeigen, dass die meisten modernen Browser und Websites, wenn sie mit zwischenspeicherbarem CSS und konsistentem HTML-Markup entworfen wurden, den Seitenstatus ganz natürlich mit dem nativen HTML-Cache des Browsers zurückgeben. dh Volles POSTBACK ist oft nicht erforderlich.

CALLBACK ist nur JavaScript. Es sind nur ECMASCRIPT-Zirkus-Tricks, die ASP.NET in der sogenannten AJAX-API in riesigen JavaScript-Bibliotheken speichert, die Ihr Browser vom Server herunterlädt, und die ASP.NET-Entwickler unwissentlich in ihre Webseiten packen, um Änderungen auf einer Webseite ohne vollständiges POSTBACK auszulösen. Die ASP.NET-API für AJAX erstellt nur all dieses massive Javascript, das sich auf der Clientseite befindet und im Browser ausgelöst wird, wenn der Benutzer etwas ändert, über etwas rollt oder auf etwas im Browser klickt, wodurch herkömmliche DOM-Ereignisse des JavaScript-Browsers ausgelöst werden Anschließend wird eine riesige Ladung JSON oder anderer Daten zur Verarbeitung an den Server zurückgesendet. Dies wird dann von den Javascipted-Bibliotheken und Objekten im Speicher des Browsers zurückgegeben und akzeptiert und ändert Teile der Webseite und des Markups des Benutzers.

Es heißt, dass etwa 5-10% der Benutzer und Browser Javascript deaktiviert haben, so dass all diese JSON und AJAX für diese Leute abstürzen und brennen würden. dh CALLBACK würde nicht funktionieren.

Das passiert hinter den Kulissen. Vieles davon ist übertrieben, wenn Sie mich fragen. Aus diesem Grund wurden Web Control-Modelle in ASP.NET in der Vergangenheit kritisiert.

Wenn Sie ASP.NET für eine Sekunde verlassen haben, können Sie selbst ein einfaches FORM-Feld in eine HTML-Webseite mit einem einzigen Textfeld und einer einzelnen Schaltfläche schreiben und es drücken und beobachten, wie es auf dem Server veröffentlicht wird, genau wie es eine ASP.NET-Seite tun würde schneller und einfacher. Das ist echtes POSTBACK. Der Browser sendet dem Server natürlich den dafür erforderlichen POST-HTTP-Header, speichert jedoch den HTML-Code im Rest der Seite zwischen, sodass er selbst blitzschnell ist.

Für CALLBACK können Sie einfach einen einfachen Javascript / ECMAScript-Code zu derselben HTML-Seite hinzufügen. Wenn der Benutzer über einen Text oder eine Schaltfläche fährt, auf ein Formularfeld klickt oder es ändert, wird die Webseite nicht POST, sondern hinter den Kulissen Lassen Sie Javascript etwas an den Server senden. Wie Sie damit über Ihr eigenes JavaScript, JSON oder Ihre eigenen Bibliotheken umgehen, ist eine andere Sache. Aber es ist keine Magie. Für Personen ohne deaktiviertes Javascipt oder Javascript sollten Sie Seiten ohne CALLBACK entwerfen und alle Änderungen zwischenspeichern, die beim Klicken auf Formularfeldsteuerelemente oder Hyperlinks zurückgegeben werden. Dies ist ein Grund, Callback-Routinen zu überdenken, obwohl die meisten modernen Benutzeragenten jetzt für ECMAScripted-Website-Routinen eingerichtet sind.

Das ist es, was die Leute verwirrt ... diese Herstellerimplementierungen von sehr einfachen HTTP-Anforderungen und Javascript-Tricks werden in eine Sprache überlagert, die nicht klar ist. Es führt dann dazu, dass Leute monströse Webanwendungen erstellen, die all diese unnötigen Dinge tun, die durch sehr einfaches Codieren gelöst werden würden.

Ich benutze und empfehle immer noch ASP.NET. Es ist ein langer Weg und ein großartiges System. Es wäre jedoch hilfreich, wenn mehr Menschen die Grundlagen ihrer Arbeit verstehen würden, bevor sie sie verwenden, da diese Frameworks angepasst und vereinfacht werden können, um sie zu verbessern, wenn Sie sehen, was wirklich unter der Haube vor sich geht.


0

Ein Postback tritt auf, wenn eine Anfrage an einen Server gesendet wird, ohne dass Details zur Sicherheit für jede Anfrage angegeben werden müssen.

Wenn Sie eine Anfrage für die andere Seite stellen, wird der Rückruf vom Server verwendet


0

Ein Postback ist auch ein Roundtrip, wenn ein Postback zu diesem Zeitpunkt ausgeführt wird und die spezielle Methode aufgerufen wird, die als Roundtrip bezeichnet wird. Postback befindet sich auf der Serverseite, während sich Roundtrip auf der Client-Seite befindet.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.