Quais são os benefícios de um arquivo de manipulador de ASHX no ASP.NET?

StackOverflow https://stackoverflow.com/questions/619697

  •  03-07-2019
  •  | 
  •  

Pergunta

Quais são os benefícios de usar um Ashx ou manipulador? Além disso, preciso deles se usar o MVC (e por que não)?

A estrutura importa (2.0+)?

Por que eu gostaria de usar um manipulador? Recentemente, fui recomendado usar um para recuperar uma imagem, mas não sei por quê.

Obrigado pelo seu tempo.

EDIT - Um manipulador é mais rápido?

Foi útil?

Solução

Apenas alguns exemplos:

  1. Geração de imagem dinâmica: Você pode escrever manipuladores que retornam imagens orientadas por dados, criando um manipulador de ASHX que retorna dados da imagem e usando esse URL em suas tags. por exemplo <img alt="user's custom icon" src="Icon.ashx?username=bob"></img>

  2. Retornando dados XML ou JSON baseados em REST para o código AJAX no cliente.

  3. HTML personalizado: Retorne HTML totalmente personalizado para uma página quando o ASP.NET Web Forms ou o MVC Framework são muito restritivos

Eu acredito que isso está disponível desde 1.0

Outras dicas

O objetivo dos manipuladores em projetos não-MVC é fornecer algum tipo de resposta codificada, fora do HTML. Normalmente, um manipulador retornava XML (RSS, repouso, etc.), JSON for jQuery ou outro JavaScript, ou às vezes apenas dados puros, como downloads binários de arquivos. Eu usei manipuladores para devolver o JavaScript especial para ser percorrido para o cliente, como uma maneira de carregar preguiçosos grandes binários ou requisitos em uma abordagem "somente para a demanda". Mais ou menos, um manipulador seria usado para retornar "qualquer coisa, menos html".

No MVC, você se afastaria dos manipuladores e utilizaria o controlador para retornar os dados que desejar. Então, no método como:

mywebsite.com/restapi/content/56223

Você RestfulContentController teria um método para index (), que não retornaria uma exibição (), mas, em vez disso, XML ou JSON puro.

public class JSONContentController : Controller
{
  public JsonResult Index(int ContentID)
  {
    // get Content() by ContentID
    //

    // return a JSON version
    return Content().SerializeToJSON();
  }
}

Eles são muito úteis se você está trabalhando em um ambiente em que não tem acesso ao IIS, mas deseja mudar coisas como cabeçalhos de resposta de expiração distante para otimizar o armazenamento em cache para arquivos como CSS, imagens, JavaScript

Para imagens, você pode fazer coisas como na otimização da mosca para poder solicitar imagens como image.jpg.ashx? W = 180 & Quality = 70 e depois usar o manipulador para entregar a imagem com base nas configurações passadas no querystring

A ASPX herda a página que implementa o estado de IrequireSession. Portanto, se você chamá -lo via Ajax, o ASP.NET precisará bloquear a sessão antes de processamento adicional.

Para o arquivo Ashx, está sem estado. A menos que você o herde do IrequitesessionState para gerenciar o estado.

Use Ashx para todas as chamadas do AJAX e use ASPX para a página Puramente ASP.NET.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top