Mvc: Pergunta: HttpContext.Features vs HttpContext.Items

Criado em 29 mai. 2018  ·  3Comentários  ·  Fonte: aspnet/Mvc

Parece que posso usar HttpContext.Features e HttpContext.Items para armazenar alguns dados para compartilhar com classes diferentes com acesso a HttpContext .

Existem algumas situações em que devo preferir um em vez do outro? Ou depende puramente de mim? É errado usar um deles em certas circunstâncias?

question

Comentários muito úteis

Os recursos são mais como um contrato explícito entre a implementação e o consumidor. Eles podem ter mais significado e também expor o comportamento, não apenas o estado. Os itens são realmente implementados por meio de um recurso. Os itens são um dicionário genérico feito para o estado de ida e volta entre as coisas que têm acesso ao contexto http.

Todos 3 comentários

Olá, @ayepirate.

A propriedade Features de HttpContext fornece uma interface para obter e configurar os recursos HTTP disponíveis para a solicitação atual. Como a coleção de recursos é mutável mesmo no contexto de uma solicitação, o middleware pode ser usado para modificar a coleção e adicionar suporte para recursos adicionais.

Portanto, apenas recursos podem ser registrados na coleção Features . Fonte: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/request-features?view=aspnetcore-2.0

Para passar dados arbitrários entre diferentes aspectos de seu código dentro do escopo da solicitação, você deve usar a coleção Items : https://docs.microsoft.com/en-us/aspnet/core/fundamentals/request- recursos? view = aspnetcore-2.0

@mkArtakMSFT mas posso criar meus próprios recursos e configurá-los. E compartilhe dados dessa forma, então qual é a diferença.

Embora os servidores sejam responsáveis ​​por criar a coleção de recursos, o middleware pode adicionar a essa coleção e consumir recursos da coleção. Por exemplo, o StaticFileMiddleware acessa o recurso IHttpSendFileFeature. Se o recurso existir, ele será usado para enviar o arquivo estático solicitado de seu caminho físico. Caso contrário, um método alternativo mais lento é usado para enviar o arquivo. Quando disponível, o IHttpSendFileFeature permite que o sistema operacional abra o arquivo e execute uma cópia direta do modo kernel para a placa de rede.

Os recursos são mais como um contrato explícito entre a implementação e o consumidor. Eles podem ter mais significado e também expor o comportamento, não apenas o estado. Os itens são realmente implementados por meio de um recurso. Os itens são um dicionário genérico feito para o estado de ida e volta entre as coisas que têm acesso ao contexto http.

Esta página foi útil?
0 / 5 - 0 avaliações