Różnica między ogłoszeniem zwrotnym a oddzwonieniem


116

Ciągle słysząc te słowa „ zwrotna ” i „ odświeżenie ” rzucił się.
Jaka jest różnica między dwoma?

Czy ogłaszanie zwrotne jest bardzo specyficzne dla stron ASP.NET?

Odpowiedzi:


204

Postback ma miejsce, gdy dane (cała strona) na stronie są wysyłane z klienta na serwer , tj. Dane są wysyłane z powrotem na serwer , a tym samym strona jest odświeżana (przerysowywana) ... pomyśl o tym jako „ wysłanie do serwera całej strony (asp.net) pełnej danych ”.

Z drugiej strony wywołanie zwrotne jest również specjalnym rodzajem ogłaszania zwrotnego , ale jest to po prostu szybka podróż w obie strony do serwera w celu uzyskania małego zestawu danych (normalnie), a zatem strona nie jest odświeżana, w przeciwieństwie do ogłaszania zwrotnego ... myśl o tym jako o „ dzwonieniu do serwera i odbieraniu niektórych danych z powrotem ”.

W przypadku Asp.Net ViewState nie jest odświeżana po wywołaniu wywołania zwrotnego , w przeciwieństwie do ogłaszania zwrotnego .

Powodem, że cała strona zostanie wysłana z ASP.NET dlatego ASP.Net otacza całą stronę w sposób <form>z metody post , a więc kiedy złożyć kliknięciu przycisku na stronie, formularz jest wysyłany do serwera ze wszystkimi pola, które są w formularzu ... w zasadzie cała strona.

Jeśli używasz FireBug (dla przeglądarki Firefox), możesz zobaczyć wywołania zwrotne na serwerze w pliku Console. W ten sposób zobaczysz, jakie konkretne dane są wysyłane na serwer ( Request), a także dane, które serwer odesłał ( Response).


Poniższy obraz ilustruje cykle życia strony zarówno ogłaszania zwrotnego, jak i wywołania zwrotnego w witrynie internetowej opartej na ASP.NET:

Cykle życia strony ASP.NET
(źródło: esri.com )


18
W rzeczywistości wywołanie zwrotne jest bardziej ogólnym terminem programowania dla funkcji, która musi zostać wykonana po zakończeniu innej funkcji.
Ryan Doherty,

1
Dzieje się tak, gdy wskaźnik do funkcji zostanie przekazany do innej funkcji, którą później wywoła
Andreas Grech,


18

Ogłaszanie zwrotne ma miejsce, gdy od klienta do serwera wysyłane jest żądanie dotyczące tej samej strony, która jest obecnie przeglądana przez użytkownika. Gdy następuje ogłaszanie zwrotne, cała strona jest odświeżana, a typowy postęp można zobaczyć na pasku postępu u dołu przeglądarki.

Callback, zwykle używany z AJAX, występuje, gdy żądanie jest wysyłane od klienta do serwera, dla którego strona nie jest odświeżana, tylko jej część jest aktualizowana bez migotania w przeglądarce


5

Zgadzam się z odpowiedzią Dreasa, ale chciałbym dodać kilka punktów. Postback to termin, który został wprowadzony bardzo niedawno przez programowanie ASP .NET, jak wyjaśnił Dreas, podczas gdy wywołanie zwrotne jest bardziej ogólne i było używane na długo przed powstaniem tworzenia stron internetowych. W rzeczywistości po raz pierwszy usłyszałem o oddzwanianiu w czasach, kiedy zacząłem programować w C (być może termin istniał wcześniej, nie wiem) i oznacza to po prostu wskaźnik do funkcji i ten wskaźnik do funkcji (nazwij to A) zostaje przekazany do innej funkcji (nazwij to B), która później wywoła A. Callback jest również ostatnio używany przez Yahoo UI Connection Manager i inne frameworki Ajax, ale uważam, że termin ten miał swoje pierwsze użycie w starych czasach C.


4

Wiele z tej dyskusji dotyczy języka ASP.NET gobbledygook ....

Odpowiedź brzmi tak. Postback to „termin” specyficzny dla platformy ASP.NET firmy Microsoft. Pamiętaj jednak, że dostawcy tacy jak Microsoft opakowują swoje WŁASNE wersje tych procesów wokół swoich własnych implementacji, wprowadzając nas w błąd co do tego, co NAPRAWDĘ SIĘ DZIEJE w świecie Http / Html.

Ich wersja POSTBACK jest w zasadzie tradycyjnym żądaniem HTTP POST wysyłanym z powrotem do serwera źródłowego. Ale w ASP.NET robią to, umieszczając gigantyczny znacznik elementu HTML FORM (z atrybutem metody POST) wokół całej strony internetowej zamiast tradycyjnych kontrolek formularza w jednej maleńkiej części strony internetowej. Robią to, ponieważ używają specyfikacji HTTP do utrzymania „stanu” swojej strony i jej elementów sterujących oraz do upewnienia się, że cała strona, nawet tradycyjne znaczniki pól nieformalnych, powróci nienaruszone.

Niestety, wysyła to OGROMNĄ ilość nieistotnych danych przez sieć, tak że ich VIEWSTATE i jego siostra POSTBACK na stronie są postrzegane przez wielu jako strata przepustowości i niechlujny sposób implementacji stanu strony internetowej. Mogę pokazać, że większość nowoczesnych przeglądarek i witryn internetowych, jeśli zostaną zaprojektowane przy użyciu CSS z możliwością buforowania i spójnych znaczników HTML, w naturalny sposób zwróci stan strony przy użyciu natywnej pamięci podręcznej HTML przeglądarki. tzn. Pełny POSTBACK jest często niepotrzebny.

CALLBACK to tylko JavaScript. To tylko sztuczki cyrkowe ECMASCRIPT, które ASP.NET przechowuje w tym, co nazywają swoim API AJAX, w gigantycznych bibliotekach JavaScript, które Twoja przeglądarka pobiera z serwera, i które programiści ASP.NET nieświadomie pakują na swoje strony internetowe, aby wywołać zmiany na stronie internetowej bez pełnego POSTBACK. ASP.NET API dla AJAX po prostu tworzy cały ten ogromny JavaScript, który jest po stronie klienta i który jest uruchamiany w przeglądarce, gdy użytkownik coś zmieni, przewróci coś lub kliknie coś w przeglądarce, wyzwalając tradycyjne zdarzenia DOM przeglądarki JavaScript, które następnie wysyła gigantyczny ładunek JSON lub innych danych z powrotem na serwer w celu przetworzenia. To jest następnie zwracane i akceptowane przez biblioteki Javascipted i obiekty w pamięci przeglądarki i zmienia części strony internetowej użytkownika i znaczniki.

Mówi się, że około 5-10% użytkowników i przeglądarek ma wyłączony Javascript, więc wszystkie te JSON i AJAX ulegną awarii i spalą się dla tych ludzi. tzn. CALLBACK nie zadziała.

To dzieje się za kulisami. Wiele z tego to przesada, jeśli o mnie chodzi. Dlatego w przeszłości krytykowano modele kontroli sieci Web w ASP.NET.

Jeśli porzuciłeś ASP.NET na sekundę, możesz sam napisać proste pole FORM na stronie HTML z pojedynczym polem tekstowym i przyciskiem, a następnie nacisnąć je i obejrzeć, jak publikuje na serwerze, dokładnie tak, jak zrobiłaby to strona ASP.NET, ale szybciej i prościej. To właśnie jest prawdziwy POSTBACK. Przeglądarka naturalnie wysyła do serwera niezbędny nagłówek HTTP POST, ale buforuje kod HTML w pozostałej części strony, więc samodzielnie renderuje błyskawicznie.

W przypadku CALLBACK możesz po prostu dodać prosty kod Javascript / ECMAScript do tej samej strony HTML, na której, gdy użytkownik najedzie na jakiś tekst lub przycisk, kliknie lub zmieni pole formularza, strona internetowa nie POST, ale za kulisami niech Javascript wyśle ​​coś do serwera. Sposób, w jaki radzisz sobie z tym za pomocą własnego JavaScript, JSON lub bibliotek, to inna sprawa. Ale to nie jest magia. Dla osób bez Javascipt lub Javascript należy projektować strony bez CALLBACK i po prostu buforować wszelkie zmiany, które powracają po kliknięciu kontrolek pól formularza lub hiperłączy. Jest to jeden z powodów, dla których warto ponownie rozważyć procedury wywołania zwrotnego, chociaż większość współczesnych agentów użytkownika jest obecnie skonfigurowanych dla procedur witryn internetowych opartych na skryptach ECMAS.

To właśnie wprawia ludzi w zakłopotanie ...... te implementacje bardzo podstawowych żądań HTTP i sztuczek z Javascriptem są nakładane na język, który nie jest jasny. Powoduje to, że ludzie budują potworne aplikacje internetowe, które robią te wszystkie niepotrzebne rzeczy, które rozwiązałoby bardzo proste kodowanie.

Nadal używam i polecam ASP.NET. Przeszedł długą drogę i świetny system. Ale pomogłoby, gdyby więcej osób zrozumiało podstawy tego, co robią przed ich użyciem, ponieważ te ramy można dostosować i uprościć, aby je ulepszyć, jeśli zobaczysz, co naprawdę się dzieje pod maską.


0

Postback ma miejsce, gdy żądanie jest wysyłane do serwera, nie trzeba podawać szczegółów dotyczących bezpieczeństwa każdego żądania.

Kiedy wysyłasz żądanie do drugiej strony, serwer używa funkcji zwrotnej


0

Ogłaszanie zwrotne jest również podróżą w obie strony, w zasadzie gdy ogłaszanie zwrotne jest wykonywane w tym czasie, wywołuje specjalną metodę znaną jako podróż w obie strony. Postback znajduje się po stronie serwera, podczas gdy podróż w obie strony znajduje się po stronie klienta.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.