Pergunta

Eu tenho um aplicativo ASP.net que usa algum objeto comum de negócios que criamos. Estes objetos de negócios também são usados ??em alguns outros serviços do Windows ou aplicações de console.

O problema que eu estou correndo em é que se eu tiver uma classe "foo" e um "bar" classe e cada um tem uma loadClient function (), se eu chamar foo.loadClient () e bar.loadClient (), cada pedido vai bater o banco de dados. Eu acho implementar algum tipo de cache de reduziria idas desnecessárias ao DB.

Aqui está o problema. Eu quero o cache para ser específico para cada solicitação HTTP que vem na ASP.net App. Isto é, uma nova solicitação recebe um novo cache. O cache pode existir para a vida dos outros aplicativos de console uma vez que 90% deles são utilitários.

Eu sei que posso usar System.Web.Cache mas eu não quero que minha middleware ligada às bibliotecas System.Web.

Hope isso explica tudo. Alguém pode me apontar na direção certa? Obrigado!

Foi útil?

Solução

Você está reutilizando objetos durante a vida de um pedido? Se não, então o modelo que você tem sugere que cada postagem também irá criar um novo conjunto de objetos em vigor eliminando a necessidade de um cache. Normalmente, um cache tem valor quando os objetos são compartilhados entre solicitações

Tanto quanto usando uma solução não específica caching web eu encontrei a Microsoft Caching Application Block muito robusto e fácil de usar.

Outras dicas

Eu acho que você pode fazer um saque no projeto Velocity.

http://msdn.microsoft.com/en-us/data /cc655792.aspx - há um artigo breve

Se você está à procura de cache entre processos, em seguida, isso é difícil.

Mas se você não quer que seu middleware amarrado a System.Web então você pode escrever uma biblioteca de interface, que servirá como ponte entre o seu middleware e system.web.

No futuro, se você quiser amarrá-lo para outro gerenciador de cache, em seguida, você pode simplesmente reescrever a sua biblioteca de interface ponte manter seu middleware absolutamente independente de gerenciador de cache real.

O System.Runtime.Caching.MemoryCache é recomendado pela Microsoft, em vez de System.Web.Caching. Ele pode ser usado no contexto da Application Block MS Caching sugerido por Abhijeet Patel.

Veja:

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