Geri Gönderme ile Geri Arama Arasındaki Fark


116

Bu ' geri arama ' ve ' geri gönderme ' kelimelerinin etrafa saçıldığını duymaya devam ediyorum .
İki arasındaki fark nedir?

Geri gönderme ASP.NET sayfalarına çok özel mi?

Yanıtlar:


204

Geri gönderme, sayfadaki veriler (tüm sayfa) istemciden sunucuya gönderildiğinde gerçekleşir ... yani veriler sunucuya geri gönderilir ve böylece sayfa yenilenir (yeniden çizilir) ... bir düşünün ' sunucuya tüm sayfanın (asp.net) verilerle dolu gönderilmesi ' olarak.

Öte yandan, geri arama da özel bir tür geri göndermedir , ancak sunucuya küçük bir veri kümesi (normalde) almak için hızlı bir geri dönüştür ve bu nedenle, geri göndermeden farklı olarak sayfa yenilenmez. ... bunu ' sunucuyu aramak ve bazı verileri geri almak ' olarak düşünün .

Asp.Net ile, bir geri göndermeden farklı olarak, bir geri arama çağrıldığında ViewState yenilenmez .

Tüm sayfanın ASP.Net ile gönderilmesinin nedeni, ASP.Net'in tüm sayfayı <form>bir gönderi yöntemiyle kapsamasıdır ve bu nedenle sayfada bir gönder düğmesi tıklandığında, form sunucuya tümü ile gönderilir. formdaki alanlar ... temelde tüm sayfanın kendisi.

FireBug kullanıyorsanız (Firefox için), aslında sunucuya çağrılan geri aramaları Console. Bu şekilde, sunucuya ( ) hangi belirli verilerin gönderildiğini Requestve ayrıca sunucunun size geri gönderdiği verileri ( Response) göreceksiniz .


Aşağıdaki resim, ASP.NET tabanlı bir Web sitesinde hem geri göndermenin hem de geri aramanın Sayfa Yaşam Döngülerini gösterir:

ASP.NET Sayfa Yaşam Döngüleri
(kaynak: esri.com )


18
Aslında, geri arama, başka bir işlev tamamlandıktan sonra yürütülmesi gereken bir işlev için daha genel bir programlama terimidir.
Ryan Doherty

1
Bir işleve işaret eden başka bir işleve geçirildiğinde, daha sonra onu çağırır
Andreas Grech


18

Geri gönderme, istemciden sunucuya, kullanıcının o anda görüntülemekte olduğu aynı sayfa için bir istek gönderildiğinde gerçekleşir. Bir geri gönderme gerçekleştiğinde, tüm sayfa yenilenir ve tarayıcının altındaki ilerleme çubuğunda tipik ilerlemeyi görebilirsiniz.

Genellikle AJAX ile kullanılan bir geri arama, istemciden sayfanın yenilenmediği sunucuya bir istek gönderildiğinde gerçekleşir, tarayıcıda herhangi bir titreme olmadan yalnızca bir kısmı güncellenir.


5

Dreas'ın cevabına katılıyorum, ancak birkaç noktaya değinmek istiyorum. Geri gönderme, Dreas'ın açıkladığı gibi, ASP .NET programlaması tarafından çok yakın zamanda tanıtılan bir terimdir, oysa geri arama daha geneldir ve web geliştirmeden çok önce kullanılmıştır. Aslında geri aramayı ilk kez C ile programlamaya başladığım günlerde duymuştum (belki de terim bundan önce vardı, bilmiyorum) ve bu sadece bir işlev gösterici ve bu işaretçi bir işleve (bu A adını verin) daha sonra A'yı çağıracak olan başka bir işleve (bu B adını verin) aktarılır. Geri arama da son zamanlarda Yahoo UI Bağlantı Yöneticisi ve diğer Ajax çerçeveleri tarafından kullanılıyor, ancak terimin ilk kez eski C günlerinde kullanıldığına inanıyorum.


4

Bu tartışmanın çoğu ASP.NET gobbledygook dilidir ....

Cevap Evet. Geri gönderme, Microsoft'un ASP.NET'ine özgü bir "terimdir" Ancak unutmayın, Microsoft gibi satıcılar bu işlemlerin KENDİ sürümlerini kendi uygulamalarının etrafına sarar ve hepimizi Http / Html dünyasında GERÇEKTEN NE OLDUĞU konusunda kafa karıştırır.

POSTBACK sürümleri temelde kaynak sunucuya geri gönderilen geleneksel bir HTTP POST isteğidir. Ancak ASP.NET'te bunu, bir web sayfasının küçük bir bölümünde geleneksel form denetimleri yerine tüm web sayfasının etrafına devasa bir FORM HTML öğesi etiketi (POST yöntemi özniteliğiyle) yapıştırarak yaparlar. Bunu, sayfalarının ve denetimlerinin "durumunu" korumak ve tüm sayfanın, hatta geleneksel form dışı alan işaretlemesinin bile bozulmadan geri döndüğünden emin olmak için HTTP belirtimini kullandıkları için yaparlar.

Ne yazık ki, bu kablo üzerinden BÜYÜK miktarda birleşik veri gönderiyor, öyle ki VIEWSTATE ve sayfadaki kardeş POSTBACK'i birçok kişi tarafından bant genişliği kaybı ve web sayfası durumunu uygulamanın özensiz bir yolu olarak görülüyor. Önbelleğe alınabilir CSS ve tutarlı HTML biçimlendirme kullanılarak tasarlanırsa, çoğu modern tarayıcı ve web sitesinin, tarayıcının yerel HTML önbelleğini kullanarak oldukça doğal bir şekilde sayfa durumunu döndüreceğini gösterebilirim. yani Tam POSTBACK genellikle gereksizdir.

CALLBACK yalnızca JavaScript'tir. Sadece ECMASCRIPT circus hileleri ASP.NET, AJAX API dedikleri şeyi tarayıcınızın sunucudan indirdiği devasa JavaScript kitaplıklarında depolar ve ASP.NET geliştiricileri, tam POSTBACK olmadan bir web sayfasındaki değişiklikleri tetiklemek için bilmeden kendi web sayfalarına paketler. AJAX için ASP.NET API, istemci tarafında bulunan ve kullanıcı bir şeyi değiştirdiğinde, bir şeyi döndürdüğünde veya tarayıcıda bir şeyi tıkladığında tarayıcıda tetiklenen ve geleneksel JavaScript tarayıcı DOM olaylarını tetikleyen tüm bu büyük Javascript'i oluşturur. daha sonra dev bir JSON yükü veya diğer verileri işlemek için sunucuya geri gönderir. Bu daha sonra Javascipted kitaplıkları ve tarayıcıdaki bellekteki nesneler tarafından iade edilir ve kabul edilir ve kullanıcıların web sayfasının ve biçimlendirmesinin bölümlerini değiştirir.

Kullanıcıların ve tarayıcıların% 5-10'unun Javascript'in devre dışı bırakıldığını, bu yüzden tüm bu JSON ve AJAX'ın bu insanlar için çöküp yanacağını söyledi. yani CALLBACK çalışmaz.

Perde arkasında olan budur. Bana sorarsan, çoğu abartılı. Ve bu nedenle ASP.NET'teki Web Kontrol modelleri geçmişte eleştirilmiştir.

ASP.NET'i bir saniyeliğine terk ettiyseniz, tek bir metin kutusu ve düğmeyle bir HTML web sayfasına kendiniz basit bir FORM alanı yazabilir ve basıp sunucuya gönderirken, tıpkı bir ASP.NET sayfasının yapacağı gibi izleyebilirsiniz. daha hızlı ve daha basit. Gerçek POSTBACK budur. Tarayıcı doğal olarak sunucuya bunun için gerekli POST HTTP Başlığını gönderir, ancak sayfanın geri kalanında HTML'yi önbelleğe alır, böylece kendi başına yıldırım hızında işler.

CALLBACK için, aynı HTML sayfasına basit bir Javascript / ECMAScript kodu ekleyebilirsiniz; burada kullanıcı bir metin veya düğmenin üzerine geldiğinde, tıkladığında veya bir form alanını değiştirdiğinde, web sayfası POST yapmaz, ancak perde arkasında siz Javascript'in sunucuya bir şey göndermesini sağlayın. Bunu kendi JavaScript, JSON veya kitaplıklarınız aracılığıyla nasıl ele aldığınız başka bir anlaşma. Ama bu sihir değil. Javascipt veya Javascript devre dışı bırakılmamış kişiler için CALLBACK içermeyen sayfalar tasarlamalı ve sadece form alanı kontrolleri veya köprüler tıklandığında geri dönen değişiklikleri önbelleğe almalısınız. Çoğu modern kullanıcı aracısı artık ECMAScripted web sitesi rutinleri için ayarlanmış olsa da, geri arama rutinlerini yeniden gözden geçirmenin bir nedeni.

İnsanların kafasını karıştıran şey budur ...... çok basit HTTP isteklerinin ve Javascripted hilelerin bu satıcı uygulamaları net olmayan bir dile yerleştirilir. Daha sonra, insanların çok basit kodlamanın çözeceği tüm bu gereksiz şeyleri yapan canavarca web uygulamaları geliştirmelerine neden olur.

Hala ASP.NET kullanıyorum ve tavsiye ediyorum. Uzun bir yol kat etti ve harika bir sistem. Ancak, daha fazla insanın bunları kullanmadan önce ne yaptıklarının temellerini anlaması yararlı olacaktır, çünkü bu çerçeveler, gerçekten kaputun altında neler olup bittiğini görürseniz, onları iyileştirmek için biraz özelleştirilebilir ve basitleştirilebilir.


0

Geri gönderme, bir sunucuya bir istek gönderildiğinde, her istek için güvenlik hakkında ayrıntı vermeye gerek yoktur.

Sunucu tarafından kullanılan diğer sayfa geri araması için bir istekte bulunduğunuzda


0

Geri gönderme, aynı zamanda, temelde bir geri gönderme işlemi gerçekleştirildiğinde, gidiş-dönüş olarak bilinen özel yöntemi çağıran bir gidiş-dönüş turudur. Geri gönderme, sunucu tarafında, gidiş dönüş olarak istemci tarafında bulunur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.