39 votes

Est-il possible d'utiliser HttpRuntime.Cache à l'extérieur ASP.NET les applications?

Scott, Hanselman dit oui.

L'Ajout Du Système.Web à votre projet web est un bon moyen d'obtenir les gens à la panique. Une autre est d'ajouter une référence à Microsoft.VisualBasic dans une application C#. Les deux sont raisonnables et sacrément utile de choses à faire, cependant.

MSDN dit non.

La classe de Cache n'est pas prévu pour une utilisation à l'extérieur de ASP.NET des applications. Il a été conçu et testé pour une utilisation dans ASP.NET fournir la mise en cache pour les applications Web. Dans d'autres types d'applications, telles que les applications de console ou des applications Windows Forms, ASP.NET la mise en cache peut ne pas fonctionner correctement.

Alors que dois-je penser?

27voto

Joel Fillmore Points 2594

Je me rends compte que cette question est ancienne, mais dans l'intérêt d'aider toute personne qui trouve ce par le biais de la recherche, il est intéressant de noter que .net v4 comprend un nouveau cache pour ce type de scénario. C'est dans le Système.Moment de l'exécution.La mise en cache de noms:

http://msdn.microsoft.com/en-us/library/dd997357%28v=VS.100%29.aspx

La référence statique pour le cache par défaut, l'instance de l': MemoryCache.Par défaut

5voto

Doron Yaacoby Points 2946

Il ne devrait pas y avoir de problème avec l'aide de HttpRuntime.Le Cache. C'est un système sophistiqué en mémoire table de hachage qui peuvent être très utiles à l'extérieur du contexte web. Pourtant, il pourrait être un peu d'un code-odeur de référence HttpRuntime.Cache dans un non-Http liés à l'application, de sorte qu'il peut être une bonne idée de placer derrière certains ICache de l'interface et de l'utiliser dans la mesure du possible.

4voto

Brownie Points 3702

Une chose à garder à l'esprit est que Microsoft a publié le .NET Framework Client Profile Package d'Installation. C'est une version du framework 3.5 qui est destiné à des applications client et a un encombrement réduit. Le Profil du Client ne comprend pas la ASP.NET les pièces du cadre.

Si votre application dépend du Système.Web application cessera d'être en mesure de prendre avantage du Profil du Client.

Voir Scott Gu Blog pour plus de détails.

2voto

Mark Cidade Points 53945

Il ne semble pas être quoi que ce soit dans les versions actuelles du Système.Web.La mise en cache.Cache qui dépendent de l'exécution HTTP exception de l' Insert() méthode qui accepte un CacheItemUpdateCallback, de sorte que Scott est bon pour la plupart.

Ce qui n'empêche pas Microsoft de modifier la classe dans l'avenir pour être plus intégré à l'adresse HTTP de l'infrastructure.

J'ai écrit un WeakReference à base de léger cache dans une autre réponse.

1voto

Nir Points 18250

Ne l'utilisez pas, même si cela fonctionne, il peut arrêter de travailler dans le prochain service pack version.

Le moment où vous faites quelque chose basé sur des détails de mise en œuvre et non pas le contrat (dans ce cas, MSDN) vous pouvez vous attendre à avoir des ennuis dans le futur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X