Neste artigo, discutiremos vários métodos de transferência de dados entre páginas ASP.NET. Esperamos que isso possa ajudar todos a compreender corretamente a utilidade e a conveniência da transferência de dados entre páginas ASP.NET.
0. Introdução
As páginas da Web não têm estado. O servidor considera cada solicitação como sendo de um usuário diferente. Portanto, o estado das variáveis não será retido entre várias solicitações consecutivas para a mesma página ou quando a página salta. Ao projetar e desenvolver um sistema Web com ASP.NET, um problema importante encontrado é como garantir que os dados sejam transmitidos de maneira correta, segura e eficiente entre as páginas. O Asp.net fornece uma variedade de tecnologias, como gerenciamento de estado, para resolver o problema de preservação. e transmissão. Em relação a questões de dados, vamos explorar os vários métodos para resolver este problema no .NET e suas respectivas ocasiões aplicáveis.
1. Vários métodos e análises de transferência de dados entre páginas ASP.NET
1.1 Usando o método Querystring
QueryString também é chamado de string de consulta. Este método anexa os dados a serem transferidos ao final do endereço da página da web (URL) e os transfere. Por exemplo, para pular da página A.aspx para a página B.aspx, você pode usar o método Request.Redirect("B.aspx? Nome do parâmetro = valor do parâmetro") ou pode usar o hiperlink:, após a página saltar , ele estará disponível na página de destino Ruquest["nome do parâmetro"] para receber parâmetros. A vantagem de utilizar o método QuerySting é que ele é simples de implementar e não utiliza recursos do servidor, a desvantagem é que o valor passado será exibido na barra de endereços do navegador, com risco de ser adulterado, e o objeto não poderá ser alterado; passada. A string de consulta só pode ser usada quando a solicitação da página por meio do URL for viável.
1.2 Utilizando campos ocultos
Os campos ocultos não serão exibidos no navegador do usuário. Geralmente, um controle oculto é adicionado à página. Ao interagir com o servidor, o valor é atribuído ao controle oculto e enviado para a próxima página. Um domínio oculto pode ser um repositório de qualquer informação armazenada em uma página da web que seja relevante para a página da web. Ao usar um campo oculto para armazenar um valor, use: hidden control.value=numeric value Ao retirar um valor recebido, use: variable=hidden control.value. A vantagem de usar campos ocultos é que eles são simples de implementar. Os campos ocultos são controles HTML padrão e não requerem lógica de programação complexa. Os campos ocultos são armazenados e lidos na página, não requerem recursos do servidor e quase todos os navegadores e dispositivos clientes suportam formulários com campos ocultos. A desvantagem é que possui poucas estruturas de armazenamento e suporta apenas estruturas de dados simples. A capacidade de armazenamento é pequena porque é armazenada na própria página, portanto não pode armazenar valores maiores e grandes quantidades de dados serão bloqueadas por firewalls e proxies.
1.3 Estado de Visualização
ViewState é um campo de formulário oculto gerenciado pela estrutura de páginas ASP.NET. Quando o ASP.NET executa uma página, os valores ViewState e todos os controles na página são coletados e formatados em uma string codificada e, em seguida, atribuídos à propriedade Value do campo de formulário oculto. Ao usar ViewState para transferir dados, você pode usar: ViewState ["nome da variável"]=valor numérico Ao recuperar dados, use: variável=ViewState["nome da variável"]. As vantagens de usar ViewState são: os valores são retidos automaticamente entre várias solicitações para a mesma página, nenhum recurso do lado do servidor é necessário e a implementação é simples. Os valores no estado de visualização são hash e compactados e são. codificados para implementação Unicode e sua segurança requer maior do que usar um campo oculto, a desvantagem é que, como o ViewState é armazenado na própria página, se um valor maior for armazenado, o usuário pode ficar lento ao exibir e enviar a página; . Embora o estado de visualização armazene dados em formato hash, eles ainda podem ser adulterados.
1.4 Utilização de cookies
Os cookies podem transferir uma pequena quantidade de informação entre páginas e podem ser armazenados num arquivo de texto no cliente ou na memória do cliente. O método Cookie é adequado para armazenar informações que mudam frequentemente em uma pequena quantidade de páginas, como salvar nomes de usuário de login para sites logados, fornecer conveniência para entrada do usuário e salvar configurações personalizadas dos usuários em alguns itens definidos pelo usuário. Disponível ao usar cookies para transferir dados: Response.Cookies["key name"]=valor da chave para recuperar dados: variável name=Request.Cookies["key name"]. As vantagens da utilização de cookies são: Os cookies ficam armazenados no cliente, não utilizam recursos do servidor, são simples de implementar e podem configurar o tempo de expiração. Desvantagens: A quantidade de dados que pode ser armazenada é relativamente pequena. Como os cookies não são suportados por todos os navegadores e podem ser banidos ou excluídos pelos usuários, eles não podem ser usados para salvar dados críticos. Além disso, os cookies são armazenados em texto simples e não é apropriado armazenar neles dados confidenciais e não criptografados.
1.5 Usando variáveis de aplicativo
Variáveis de aplicativo também podem ser usadas para transferir valores entre páginas. As variáveis de aplicativo são globais e todos os usuários compartilham uma variável de aplicativo. Uma vez definidas, elas afetarão todas as partes do programa. Se você quiser usar um determinado valor de variável em todo o aplicativo, o objeto Application seria a melhor escolha. Ao armazenar dados, adicione o valor à variável do Aplicativo: Application["nome da variável"]=valor numérico; use para recuperar dados: variável=Aplicativo["nome da variável"]; explicitamente :Application["nome da quantidade"]=null.
Vantagens da aplicação: Fácil de usar, escopo global. Disponível para todas as páginas do aplicativo. Desvantagens: Se o processo do lado do servidor que salva os dados for danificado (como devido a falha do servidor, atualização ou desligamento), os dados serão perdidos, portanto, você deve ter uma estratégia garantida ao usar o aplicativo, pois ocupa a memória do lado do servidor; , o que pode afetar o desempenho do servidor e a escalabilidade do aplicativo.
1.6 Usando variáveis de sessão
Os objetos de sessão podem ser usados para armazenar informações sobre conversas específicas que precisam ser mantidas. Diferentes clientes geram diferentes objetos de sessão. A sessão é usada para armazenar informações de curto prazo específicas de uma sessão individual. O uso e o formato da Sessão são iguais aos do Aplicativo.
Vantagens: É fácil de implementar, oferece alta segurança e durabilidade, pode lidar com reinicialização do IIS e reinicialização auxiliar de processos e pode ser usado em vários processos. A desvantagem é que consome memória do servidor. Portanto, não armazene muitas informações. O uso mais comum de Sessão é fornecer funções de identificação de usuário para aplicativos da Web junto com Cookies. As sessões também podem ser usadas em navegadores que não suportam Cookies. No entanto, o uso de uma sessão sem cookies requer a colocação do identificador da sessão na string de consulta, que também sofre dos problemas de segurança declarados na seção de string de consulta deste artigo.
1.7 Usando propriedades estáticas de classes
Este método usa as propriedades estáticas da classe para transferir valores entre as duas páginas. Defina uma classe contendo atributos estáticos; atribua o valor a ser transferido ao atributo estático, a página de destino pode obter o valor a ser transferido na página de origem através do atributo estático;
A vantagem é que ele pode transmitir facilmente vários dados, mas a desvantagem é que requer programação adicional, aumenta a carga de trabalho de programação e ocupa memória do servidor.
1.8 Usando Server.Transfer
Ao transferir o fluxo de execução do arquivo ASPX atual para outra página ASPX no mesmo servidor por meio do método Server.Transfer, os dados do formulário ou a string de consulta podem ser retidos. a primeira página usa Server.Transfer("target page name.aspx", true); a página de destino usa: Ruquest.Form["Control Name"] ou Ruquest.QueryString["Control Name"] para recuperar dados. Também pode ser usado no Asp.net2.0 assim, o código é o seguinte:
Página anterior pg1;
pg1=(Página Anterior)Context.Handler;
Response.Write(pg1.Nome);
Explicação: Este código é usado para recuperar o valor passado da página de destino. Página anterior é o nome da classe da página original, Nome é o atributo definido na página original e os dados que precisam ser transferidos são armazenados nele. atributo.
Usando este método, você precisa escrever algum código para criar algumas propriedades para que possa acessá-lo de outra página. Você pode acessar o valor como uma propriedade de objeto em outra página. Este método não é apenas simples, mas também orientado a objetos.
1.9 Cache
O cache possui funções poderosas de operação de dados. Ele armazena dados na forma de uma coleção de pares de valores-chave que podem ser inseridos e recuperados especificando palavras-chave. Seus recursos de encerramento baseados em dependência permitem controlar com precisão como os dados no cache são atualizados e eliminados em tempo hábil. Ele pode realizar o gerenciamento de bloqueios internamente e não precisa usar os métodos Lock() e Unlock() para gerenciamento de serialização como o objeto Application. A desvantagem é que o método de uso é complicado e o uso inadequado reduzirá o desempenho.
2. Métodos de transferência de valor que podem ser usados em diferentes situações de salto de página
2.1 Cenário 1: A página de origem pode pular para a página de destino e a página de origem passa dados para a página de destino.
Usar strings de consulta é um método simples e comumente usado para transferir uma pequena quantidade de informações de uma página para outra e não há problemas de segurança. Use o método Server.Transfer para passar dados de formulário ou strings de consulta para outra página. o HttpContext da página inicial Este método pode ser usado quando a página de destino e a página de origem estão no mesmo servidor.
2.2 Caso 2: A página passa o valor para sua própria página
Ou seja, ao reter valores em diversas solicitações para a mesma página, a propriedade ViewState fornece funcionalidade com segurança básica. Os campos ocultos também podem ser usados para armazenar uma pequena quantidade de informações da página que são postadas nela mesma ou em outra página e são usados quando questões de segurança não são consideradas.
2.3 Caso 3: A página de origem passa valores para a página de destino, mas a página de origem não pode ser conectada diretamente à página de destino.
Existem vários métodos e qual deles usar depende da situação específica.
Aplicação: Armazena informações globais que são usadas por vários usuários e que são alteradas com pouca frequência, quando a segurança não é um problema. Não armazene grandes quantidades de informações. Sessão: Armazena informações de curto prazo específicas de uma sessão individual e que exigem alta segurança. Não armazene grandes quantidades de informações no estado da sessão. Observe que os objetos de estado de sessão são criados e mantidos durante o tempo de vida de cada sessão no aplicativo. Em aplicativos que suportam muitos usuários, isso pode consumir recursos significativos do servidor e impactar a escalabilidade.
Cookies: Utilizados quando é necessário armazenar uma pequena quantidade de informações do lado do cliente e não há problemas de segurança. Os atributos estáticos da classe facilitam a transmissão de vários dados.
Cache: objeto para um único usuário, um grupo de usuários ou todos os usuários. Os dados podem ser salvos para múltiplas solicitações por um longo tempo e de forma eficiente. Os métodos acima não são utilizados apenas no caso três, mas também nos dois casos anteriores. Basta utilizá-los o menos possível quando desnecessários, caso contrário causará desperdício de recursos ou aumentará a complexidade do programa.