Y at-il de toute façon à cache fonction / méthode en C #
Je me suis ennuyé avec l'écriture même de code encore et encore pour mettre en cache les objets dans la couche d'accès aux données.
Est de toute façon il cache c# fonction des résultats sans trop de changements de fonctions.
Est-il un framework prend en charge cette fonctionnalité à l'heure actuelle?
Puis-je archiver le même par écrit personnalisé "c# fonction des attributs"? si oui, envoyez-moi quelques points pour démarrer la mise en œuvre?
source d'informationauteur Veeru
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer de la mise en cache des attributs avec PostSharp. Ici en est un exemple.
Possibilité 1: Utilisation de l'IL de Tissage
Postsharp qui a été dit avant.
Vous pouvez également essayer les MethodCache.Fody paquet.
Possibilité 2: Utilisation d'un Proxy d'Interception /Cadre
Exemple (Ninject & Ninject.Interception):
Ensuite, vous pouvez décorer des fonctions comme ceci:
Intercepté fonctions doivent être virtuel et des classes doit être créé par le noyau Ninject. Si vous comptez sur la performance, vous pourriez classes proxy directement via le Château.DynamicProxy (qui est utilisé en interne par Ninject.Extensions.L'Interception.DynamicProxy).
Possibilité 3: Utiliser une Expression wrapper
Vous pouvez passer à la fonction de l'expression, de générer un cache de clé contenant de la classe, la méthode et les paramètres de l'information et invoquer l'expression si elle ne trouve pas dans le Cache. Cela ajoute plus de gestion d'exécution de l'AOP /Proxy cadres, mais sera suffisant pour les solutions simples.
Si je vous lis question correct, le terme correct pour ce que vous voulez est memoization. Wikipédia donne plus de détails sur ce sujets. Malheureusement, il n'existe pas de référence à un C# bibliothèque de la soutenir.
La Cache de bloc d'Application est la réponse de Microsoft à construit dans la bibliothèque pour la mise en Cache .NET.
Paresseux stocker de la valeur après la première exécution.
Exemple: http://msdn.microsoft.com/en-us/vstudio/bb870976
Je suggère Spring.Net AOP.
Essentiellement, il crée un proxy et les appels peuvent être redirigés à partir de/vers la mémoire cache.
http://www.springframework.net/doc/reference/html/aop-quickstart.html
et puis vous pouvez avoir quelque chose comme ça pour vos conseils: