Entity Framework est un framework de mappage objet-relationnel populaire pour .NET de Microsoft. Il vous permet de travailler avec des données relationnelles via des objets de domaine. Et cela élimine le besoin de la plupart du code de persistance de la base de données que vous auriez autrement besoin d’écrire.
La popularité d'Entity Framework a conduit à son utilisation fréquente dans des applications à transactions élevées où les performances et l'évolutivité sont essentielles. Mais dans la plupart des cas de transactions élevées, la base de données devient rapidement un goulot d'étranglement. En effet, contrairement au niveau application où vous pouvez ajouter davantage de serveurs d'applications selon vos besoins d'évolution, vous ne pouvez pas faire de même avec le niveau base de données.
La seule façon d'atteindre cette évolutivité est avec un cache distribué comme NCache. NCache est un cache distribué extrêmement rapide et évolutif pour les applications .NET. Il vous permet de mettre en cache les données des applications, de réduire les déplacements coûteux dans les bases de données et d'améliorer les performances et l'évolutivité de vos applications.
Bien qu'Entity Framework ne fournisse pas de modèle de fournisseur de cache de deuxième niveau (2e niveau), NCache a implémenté un fournisseur ADO.NET personnalisé pour Entity Framework avec lequel NCache peut plug-in et mettre en cache les résultats des requêtes Entity Framework. Cela vous permet de commencer à utiliser le cache distribué dans votre application Entity Framework sans apporter de modifications au code.
Voir la documentationSi votre application Entity Framework s'exécute dans un environnement multiserveur, vous avez besoin d'un cache distribué en tant que cache de second niveau Entity Framework. Et, NCache est un cache de second niveau Entity Framework idéal pour les configurations multi-serveurs et vous devez l'utiliser pour ces raisons :
La meilleure chose à propos de l'utilisation NCache avec Entity Framework est qu'aucune programmation n'est requise de votre part. Vous modifiez simplement les fichiers de configuration de votre application et spécifiez NCache en tant que fournisseur de cache de second niveau. Voici un exemple de modifications app.config :
<interceptors>
<interceptor type="Alachisoft.NCache.Integrations.EntityFramework.Caching.EFCommandInterceptor,
Alachisoft.Integrations.EntityFramework.CachingProvider" />
</interceptors>
Depuis que NCache Le fournisseur Entity Framework Second Level Cache se branche en tant que fournisseur ADO.NET personnalisé, il vous permet de l'exécuter en mode analyse où il enregistre toutes les différentes requêtes que votre application émet vers Entity Framework. Ces requêtes sont consignées dans un fichier avec un décompte du nombre d'appels de cette requête pendant ce mode d'analyse. Ci-dessous un exemple :
<analysis-report>
<!--Call-count = 21-->
<query query-text="" ["SELECT FROM Products"] |
[stored-procedure-name = ""]
caching = "true"
expiration-type="absolute" |
sliding = ""
expiration-time="180"
dbsyncdependency = "true"/>
</analysis-report>
Cela vous permet de déterminer quelles requêtes vous souhaitez mettre en cache et pendant combien de temps. Vous pouvez également spécifier la synchronisation de la base de données pour certaines ou toutes vos requêtes.
En branchant NCache Fournisseur de cache de deuxième niveau Entity Framework grâce aux modifications apportées à app.config, vous allez obtenir un cache distribué au niveau de l'entreprise pour votre application. Voici quelques fonctionnalités NCache fournit pour les applications Entity Framework.
Bien que, en utilisant NCache comme Entity Framework Second Level Cache est très rapide et simple, il ne vous fournit qu'un ensemble limité de NCache caractéristiques. La raison en est que NCache est lié par le fait qu'il est connecté en tant que fournisseur ADO.NET personnalisé et doit traiter au niveau des requêtes SQL. Il existe de nombreux NCache fonctionnalités que vous ne pouvez pas utiliser si vous décidez d'utiliser NCache en tant que fournisseur de cache de deuxième niveau d’Entity Framework.
L'alternative pour vous est d'utiliser NCache directement depuis votre application Entity Framework en créant NCache Appels d'API comme le font toutes les autres applications .NET non-Entity Framework. Bien que cette voie nécessite un petit effort de programmation, vous pourriez décider que les avantages l'emportent sur l'effort de programmation supplémentaire.
Vous trouverez ci-dessous une liste des fonctionnalités que vous manqueriez si vous l'utilisiez comme cache de deuxième niveau Entity Framework par rapport à si vous utilisiez NCache directement depuis votre application.