Diferença entre um postback e um callback

116

Eu continuo ouvindo essas palavras ' callback ' e ' postback ' sendo jogadas por aí.
Qual é a diferença entre dois?

O postback é muito específico para as páginas ASP.NET?

Biswanath
fonte

Respostas:

204

Um Postback ocorre quando os dados (a página inteira) na página são postados do cliente para o servidor ... ou seja, os dados são postados de volta no servidor e, portanto, a página é atualizada (redesenhada) ... pense nisso como ' enviar ao servidor toda a página (asp.net) cheia de dados '.

Por outro lado, um retorno de chamada também é um tipo especial de postback , mas é apenas uma rápida viagem de ida e volta ao servidor para obter um pequeno conjunto de dados (normalmente) e, portanto, a página não é atualizada, ao contrário do postback ... pense nisso como ' chamar o servidor e receber alguns dados de volta '.

Com o Asp.Net, o ViewState não é atualizado quando um retorno de chamada é invocado , ao contrário de um postback.

A razão que toda a página é remetida com ASP.Net é porque ASP.Net abrange toda a página em um <form>com um método post , e assim quando um enviar botão é clicado na página, o formulário é enviado para o servidor com todos os campos que estão no formulário ... basicamente a própria página inteira.

Se você estiver usando FireBug (para Firefox), poderá realmente ver retornos de chamada sendo invocados para o servidor no Console. Dessa forma, você verá quais dados específicos estão sendo enviados para o servidor ( Request) e também os dados que o servidor enviou de volta ( Response).


A imagem abaixo ilustra os ciclos de vida da página de um postback e um callback em um site baseado em ASP.NET:

Ciclos de vida da página ASP.NET
(fonte: esri.com )

Andreas Grech
fonte
18
Na verdade, um retorno de chamada é um termo de programação mais geral para uma função que precisa ser executada após a conclusão de outra função.
Ryan Doherty
1
É quando um ponteiro para uma função é passado para outra função, que ele invocará mais tarde
Andreas Grech
18

Um postback ocorre quando uma solicitação é enviada do cliente para o servidor para a mesma página que o usuário está visualizando no momento. Quando ocorre um postback, a página inteira é atualizada e você pode ver a progressão típica na barra de progresso na parte inferior do navegador.

Um retorno de chamada, geralmente usado com AJAX, ocorre quando uma solicitação é enviada do cliente para o servidor para o qual a página não foi atualizada, apenas uma parte dela é atualizada sem qualquer oscilação ocorrendo no navegador

Sanket
fonte
5

Concordo com a resposta de Dreas, mas gostaria de acrescentar alguns pontos. Postback é um termo que foi introduzido recentemente pela programação ASP .NET, conforme Dreas explicou, enquanto o callback é mais genérico e foi usado antes do desenvolvimento web existir. Na verdade, ouvi pela primeira vez sobre callback nos dias em que comecei a programar em C (talvez o termo existisse antes disso, não sei) e significa simplesmente um ponteiro para função e esse ponteiro para uma função (chame de A) é passado para outra função (chame esta de B) que mais tarde invocará A. Callback também é usado recentemente pelo Yahoo UI Connection Manager e outras estruturas Ajax, mas acredito que o termo teve seu primeiro uso nos velhos tempos C.

Kevin Le - Khnle
fonte
4

Muito dessa discussão é linguagem gobbledygook ASP.NET ....

A resposta é sim. Postback é um "termo" específico para o ASP.NET da Microsoft. Mas lembre-se, fornecedores como a Microsoft envolvem suas PRÓPRIAS versões desses processos em torno de suas próprias implementações, confundindo a todos nós quanto ao que REALMENTE ACONTECE no mundo Http / Html.

Sua versão de POSTBACK é basicamente uma solicitação HTTP POST tradicional enviada de volta ao servidor de origem. Mas no ASP.NET eles fazem isso colocando uma tag de elemento HTML FORM gigante (com o atributo do método POST) em toda a página da web, em vez de controles de formulário tradicionais em uma pequena parte de uma página da web. Eles fazem isso porque estão usando a especificação HTTP para manter o "estado" de sua página e seus controles, e para garantir que a página inteira, mesmo a marcação de campo não-formulário tradicional, volte intacta.

Infelizmente, isso envia uma enorme quantidade de dados desnecessários pela rede, de modo que seu VIEWSTATE e seu POSTBACK irmão na página passaram a ser vistos por muitos como um desperdício de largura de banda e uma maneira desleixada de implementar o estado da página da web. Posso mostrar que a maioria dos navegadores e sites modernos, se projetados usando CSS armazenável em cache e marcação HTML consistente, retornarão o estado da página de maneira bastante natural usando o cache HTML nativo do navegador. ou seja, POSTBACK completo geralmente é desnecessário.

CALLBACK é apenas JavaScript. São apenas truques de circo ECMASCRIPT que o ASP.NET armazena no que chamam de API AJAX em bibliotecas JavaScript gigantescas que seu navegador baixa do servidor e que os desenvolvedores ASP.NET, sem saber, empacotam em suas páginas da web para acionar alterações em uma página da web sem POSTBACK completo. A API ASP.NET para AJAX apenas cria todo esse Javascript enorme que está no lado do cliente e que é acionado no navegador quando o usuário muda algo, rola sobre algo ou clica em algo no navegador, acionando eventos DOM do navegador JavaScript tradicional, que em seguida, envia uma carga gigante de JSON ou outros dados de volta ao servidor para processamento. Isso então é retornado e aceito pelas bibliotecas e objetos Javascipted na memória do navegador e altera partes da página da web do usuário e da marcação.

Diz-se que cerca de 5-10% dos usuários e navegadores têm o Javascript desabilitado, então todo esse JSON e AJAX travaria e queimaria para essas pessoas. ou seja, CALLBACK não funcionaria.

Isso é o que acontece nos bastidores. Muito disso é um exagero, se você me perguntar. E é por isso que os modelos de controle da Web no ASP.NET foram criticados no passado.

Se você abandonou o ASP.NET por um segundo, você poderia escrever um campo FORM simples em uma página da web HTML com uma única caixa de texto e botão e pressioná-lo e vê-lo postar no servidor, exatamente como uma página ASP.NET faria, mas mais rápido e simples. Isso é o verdadeiro POSTBACK. O navegador naturalmente envia ao servidor o cabeçalho POST HTTP necessário para fazer isso, mas armazena em cache o HTML no restante da página, de forma que ele renderiza rapidamente por conta própria.

Para CALLBACK, você poderia apenas adicionar um código Javascript / ECMAScript simples à mesma página HTML onde, quando o usuário rola sobre algum texto ou botão, clica ou altera um campo de formulário, a página da web não faz POST, mas nos bastidores você fazer com que o Javascript envie algo ao servidor. Como você lida com isso por meio de seu próprio JavaScript, JSON ou bibliotecas é outra coisa. Mas não é mágica. Para pessoas sem Javascipt ou Javascript desabilitado, você deve criar páginas sem CALLBACK e apenas armazenar em cache as alterações que retornam quando os controles de campo do formulário ou hiperlinks são clicados. É um motivo para reconsiderar as rotinas de retorno de chamada, embora a maioria dos agentes de usuário modernos agora sejam configurados para rotinas de site com script ECMAS.

Isso é o que confunde as pessoas ...... essas implementações de fornecedores de solicitações HTTP básicas e truques de script Javas são colocadas em camadas em uma linguagem que não é clara. Em seguida, faz com que as pessoas criem aplicativos web monstruosos que fazem todas essas coisas desnecessárias que uma codificação muito simples resolveria.

Eu ainda uso e recomendo ASP.NET. Percorreu um longo caminho e é um ótimo sistema. Mas ajudaria se mais pessoas entendessem o básico do que fazem antes de usá-los, já que esses frameworks podem ser personalizados e simplificados um pouco para melhorá-los se você vir o que está realmente acontecendo nos bastidores.

Stokely
fonte
0

Um postback ocorre quando uma solicitação é enviada a um servidor sem a necessidade de fornecer detalhes sobre segurança para cada solicitação.

Quando você faz uma solicitação para a outra página, o retorno de chamada é usado pelo servidor

Andreas Grech
fonte
0

Um postback também é uma viagem de ida e volta, basicamente quando um postback é executado naquele momento, ele chama o método especial conhecido como viagem de ida e volta. O postback está no lado do servidor, enquanto a viagem de ida e volta está no lado do cliente.

Rohit
fonte