Cache de deuxième niveau Entity Framework avec NCache

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 documentation

Pourquoi utiliser NCache en tant que cache de deuxième niveau Entity Framework ?

Si 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 :

  1. NCache est extrêmement rapide : NCache est un cache distribué extrêmement rapide et vous offre des temps de réponse inférieurs à la milliseconde.
  2. NCache offre une évolutivité linéaire : NCache ne devient jamais un goulot d'étranglement d'évolutivité. Il vous permet d'ajouter des serveurs au cluster de cache pour obtenir une évolutivité linéaire et gérer des charges de transaction extrêmes.
  3. La taille du cache peut augmenter à l'infini : NCache fournit le partitionnement du cache et regroupe la mémoire de tous les serveurs de cache pour cela. Ainsi, vous pouvez augmenter le stockage du cache en ajoutant simplement davantage de serveurs au cluster de cache.
  4. NCache réplique intelligemment les données : NCache vous permet de répliquer intelligemment le cache et sans compromettre les performances. Ainsi, vous ne perdrez aucune donnée du cache même si un serveur de cache tombe en panne.
  5. NCache vous offre 100 % de disponibilité : NCache dispose d'un cluster de cache dynamique auto-réparateur sans point de défaillance unique. Par conséquent, NCache vous permet d'ajouter ou de supprimer des serveurs de cache au moment de l'exécution sans arrêter votre application ou le cache.

Utilisez NCache en tant que cache de deuxième niveau Entity Framework sans programmation

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>

Utiliser le mode d'analyse et le mode de mise en cache

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.

NCache Fonctionnalités pour le cache de deuxième niveau d'Entity Framework

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.

  1. Synchroniser le cache avec la base de données : Certaines données présentes dans le cache peuvent être modifiées dans la base de données à l'insu ou sans la participation de votre application. Et, pour ces données, vous pouvez spécifier les classes correspondantes pour la fonctionnalité de synchronisation de base de données de NCache. Ceci permet NCache pour ensuite vous connecter à la base de données, surveiller les modifications des données, puis mettre à jour automatiquement le cache pour garantir que les données du cache sont toujours synchronisées avec la base de données. NCache fournit SqlDependency pour SQL Server, OracleDependency pour Oracle et DbDependency pour toutes les bases de données compatibles OLEDB.
  2. Expiration absolue : Expiration absolue dans NCache est spécifié séparément pour chaque élément mis en cache et est une valeur date-heure lorsque NCache l'article expire automatiquement. Pour Entity Framework, NCache vous demande de spécifier une valeur "intervalle", puis utilise la formule "Maintenant () + intervalle" pour calculer la valeur date-heure pour l'expiration absolue.
  3. Expiration glissante : Glisser l'expiration dans NCache est spécifié séparément pour chaque élément mis en cache et est une valeur d'intervalle. NCache fait expirer l'élément mis en cache s'il n'a ni été récupéré ni mis à jour pendant cet intervalle. Vous pouvez spécifier cet intervalle via NCache Fichier de configuration du fournisseur de cache de second niveau Entity Framework.
  4. Sérialisation compacte : Chaque fois qu'un objet .NET est mis en cache dans un cache hors processus ou distribué, il doit d'abord être sérialisé. Et la sérialisation .NET standard est lente car elle utilise .NET Reflection au moment de l’exécution. NCache vous offre un moyen d'inscrire vos cours auprès de NCache ainsi que NCache génère un code de sérialisation lorsque votre application se connecte au cache. NCache compile ensuite ce code en mémoire et l'utilise pour la sérialisation. C'est presque 10 fois plus rapide que la sérialisation .NET classique. Et vous pouvez utiliser cette fonctionnalité avec Entity Framework. Enregistrez simplement vos classes Entity Framework Entity avec NCache pour la sérialisation compacte.

En utilisant NCache Directement depuis 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.

NCache Fonctionnalités manquantes dans le cache de deuxième niveau d'Entity Framework

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.

  1. Opérations en masse
  2. Dépendances du cache
    • Basé sur la clé
    • Basé sur un fichier
    • Coutume
  3. Groupes et sous-groupes
  4. Tags
  5. Balises nommées
  6. Recherches basées sur le langage de requête objet (OQL) et LINQ
  7. Verrouiller et déverrouiller les éléments mis en cache
  8. Gestion des versions des éléments du cache
  9. API de diffusion en continu
  10. Lecture directe, écriture directe et écriture différée
  11. Notifications d'événement
    • Basé sur l'article (mettre à jour et supprimer)
    • Usage général (ajout, mise à jour, suppression)
    • Coutume
  12. Requête continue
  13. Partage de données d'exécution
  14. Chargeur de cache

Que faire ensuite?

© Copyright Alachisoft 2002 - . Tous droits réservés. NCache est une marque déposée de Diyatech Corp.