O uso geral do retorno de chamada é relativamente simples. Basta consultar diretamente a ajuda e os exemplos do msdn. Mas se você quiser realmente usá-lo bem e com precisão, ou quiser desenvolver alguns componentes WEB baseados no mecanismo de retorno de chamada, primeiro você deve ter um conhecimento profundo do mecanismo de implementação de retorno de chamada. Neste artigo, Teddy trabalhará com você para analisar todo o mecanismo de invocação e feedback do retorno de chamada. Acredito que será um benefício certo ajudá-lo a usar melhor o retorno de chamada.
Callback vs Atlas
Primeiro, vamos falar sobre o Atlas. Muitos amigos podem achar estranho que já exista Callback, por que precisamos liberar o Atlas novamente? Em relação a esta questão, não investiguei como o autor do Atlas a explica. Mas, pela minha experiência pessoal no uso de retorno de chamada e atlas, sinto que o retorno de chamada como interface é muito semelhante ao postback e deve ser para permitir que os usuários o usem de forma semelhante ao postback. No entanto, deve-se dizer que seu mecanismo semelhante ao postback não é particularmente conveniente de usar e não é fácil de expandir. É claro que isso é comparado a outras implementações de estrutura AJAX. Portanto, a Microsoft aprendeu com muitas implementações AJAX existentes, como Prototype, Backbase e AJAX.NET, e combinou-as com algumas das funções exclusivas do ASP.NET 2.0 para criar uma estrutura AJAX que se baseia nos pontos fortes de outras. É difícil quantificar o quão bom é desenvolver aplicativos AJAX baseados no Atlas, mas definitivamente não é pior do que outros frameworks AJAX, além do backend da Microsoft e dos aplicativos de sites de peso como live.com Promoção, seu impacto certamente vale a pena ansioso por.
No entanto, isso não significa que a implementação de retorno de chamada seja inútil. Como programadores, precisamos ter a atitude correta e usar a tecnologia mais correta no caso de uso correto. Nenhum framework é onipotente e adequado para qualquer ambiente de uso, assim como todo mundo está debatendo qual método de desenvolvimento de software é melhor, CMMi, RUP, XP, AGILE~~, na verdade não existe o melhor, o mais adequado é o mais adequado. O que mais devemos fazer é compreender os princípios, vantagens e desvantagens das diversas soluções, para que possamos utilizar racionalmente as ferramentas certas para resolver problemas práticos.
Comece pelo script do cliente
Todos sabemos que, no nível mais básico, todo AJAX não tem nada mais do que dois mecanismos de implementação: XMLHTTP e IFRAME. Antes da palavra AJAX ganhar ampla atenção, na verdade, estruturas funcionais baseadas nessas duas implementações subjacentes, ou implementações com efeito de não atualização baseadas nessas duas tecnologias, já eram amplamente utilizadas. É claro que, com o desenvolvimento atual, em termos de uso de interfaces, os detalhes desses mecanismos subjacentes são muitas vezes ocultados pela estrutura, e o uso de interfaces tornou-se cada vez mais simples. Os usuários só precisam chamar essas interfaces simples, e não há necessidade de saber. como conseguir o efeito específico.
No entanto, como estamos aqui para analisar o mecanismo de implementação de retorno de chamada, vamos começar com uma chamada de script do cliente de chamada de retorno para ver como a Microsoft implementa esse mecanismo de retorno de chamada.
1. ClientScript.GetCallbackEventReference(...)
Para acionar um retorno de chamada, primeiro é claro, uma chamada precisa ser emitida no script do cliente. Uma sintaxe de chamada típica é a seguinte:
<script language="javascript" type="text/javascript">
função any_script_function(arg, contexto)
{
<%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "contexto")%>;
}
</script>
ClientScript.GetCallbackEventReference(...) retornará o script de retorno de chamada real de acordo com os parâmetros passados. Esta função possui várias versões sobrecarregadas, portanto, você pode consultar o MSDN para obter o significado desses parâmetros. Pegue os parâmetros específicos no código de exemplo acima:
- isso significa que o controle do servidor que executa o retorno de chamada é a página atual. A página atual deve implementar a interface ICallbackEventHandler, incluindo a string GetCallbackResult() e void RaiseCallbackEvent(eventArgument). duas funções de interface, este parâmetro também pode ser uma referência a um controle WEB. Claro, este espaço também deve implementar a interface ICallbackEventHandler
- "arg" é o valor do parâmetro eventArgument que será passado para RaiseCallbackEvent; Uma string que define o formato;
- "ReceiveServerData" é o nome da função de script do cliente que processa o conteúdo retornado após o retorno de chamada ser bem-sucedido. Esta função deve existir na página onde o retorno de chamada é executado e pode conter dois parâmetros. , por exemplo:
<script type="text/javascript">
functionReceiveServerData(resultado, contexto)
{}
</script>
Esses dois parâmetros são o resultado dos dados de retorno do retorno de chamada e o parâmetro de contexto que é retornado inalterado quando acionamos o retorno de chamada. É claro que esses dois parâmetros são do tipo string.
- Não há necessidade de explicar "contexto". Apenas lembre-se que este parâmetro será passado intacto para a função de processamento de dados de retorno especificada. A documentação oficial do MSDN diz que o contexto geralmente pode ser usado para passar o código do script que precisa ser chamado na função de processamento de dados de retorno do cliente, mas na verdade, você pode passar qualquer coisa como um retorno de chamada do cliente. para o canal de transferência de parâmetros entre os segmentos receptores que processam os dados retornados.