Avec AppFabric, l'industrie .NET reste dans l'attente d'un cache distribué en mémoire pour émerger en tant que concurrent. Bien que quelques alternatives se soient présentées, aucune n'offre une solution aussi complète que NCache.
NCache est un cache distribué en mémoire open source qui fournit aux utilisateurs un cache distribué extrêmement rapide et linéairement évolutif qui met en cache les données d'application et réduit les déplacements coûteux de la base de données. NCache est un produit éprouvé sur le marché et précède App Fabric d'environ cinq ans. Et de nombreux avantages vous attendent à la fin de votre processus de migration, comme nous le verrons ci-dessous.
NCache Détails AppFabric Fin AppFabric Migration
1. Garder le cache frais
La synchronisation de la base de données est une fonctionnalité cruciale pour un cache distribué en mémoire de qualité. Étant donné que vous trouvez généralement des caches distribués au niveau intermédiaire entre les applications et une base de données, il est fort probable que les données soient mises à jour directement dans la base de données ou le cache indépendamment. Ce problème nécessite un mécanisme pour empêcher les données obsolètes.
Par conséquent, ces caches distribués doivent vous permettre de spécifier une relation ou une dépendance entre l'élément mis en cache et son élément correspondant dans la base de données. Ainsi, chaque fois que la base de données change, ses modifications sont reflétées dans le cache via une invalidation ou des mises à jour.
Par exemple, NCache fournit Dépendance SQL prise en charge de SQL Server. Vous pouvez créer une dépendance d'un élément mis en cache avec un ensemble de données basé sur une instruction SQL. Chaque fois que cet ensemble de données spécifique change ou est modifié, le serveur SQL envoie un événement à NCache, et l'élément de cache est invalidé. Par exemple, CacheItem item = newCacheItem(myObject);
1 2 3 4 5 6 7 8 9 10 11 |
// Get orders against customerID from DB var order = FetchOrderByCustomerID("ALFKI"); // Generate a unique cache key for the order string key = $"Order:{order.OrderID}"; CacheItem item = new CacheItem(order); // Create SQL query to select the data from the database string query = "SELECT CustomerID, Address, City FROM dbo.Customers WHERE CustomerID = 'ALFKI';"; //Specify the database connection string and the query to create and set SQLCacheDependency. item.Dependency = new SqlCacheDependency(dbConnString, query); // Insert the item into the cache cache.Insert(key, item); |
Ainsi, le cache se synchronisera avec la base de données. NCache prend également en charge la même fonctionnalité avec Oracle, OleDB et même des sources de données non relationnelles comme FileSystems via notre Magasin de persistance.
NCache Détails Base de données Oracle OleDBComment
2. Requêtes SQL
Donné NCacheGrâce à la capacité de synchronisation de , il est facile d'envisager de conserver toutes vos données dans le cache. Malheureusement, cela poserait un léger problème car la recherche n'est possible que via vos données mises en cache si la récupération via Key est la seule option. NCache offre une solution à cela par le biais de requêtes SQL. Ceci est possible par indexage attributs d'objet .NET sélectionnés et exécution de requêtes de recherche.
1 2 3 4 5 6 7 8 9 |
//string query = "SELECT * FROM FQN.Product WHERE UnitsInStock > ?"; var queryCommand = new QueryCommand(query); queryCommand.Parameters.Add("UnitsInStock",0); ICacheReader reader = cache.ExecuteReader(queryCommand); while (reader.Read()) { string ID = reader.GetValue("ProductID"); string Name = reader.GetValue("ProductName"); } |
Pour améliorer l'expérience des développeurs, NCache vous permet également d'attribuer groupes, étiquetteset la balises nommées à vos éléments mis en cache que vous pourrez ensuite utiliser dans vos requêtes SQL pour récupérer rapidement des éléments.
3. Requête LINQ
De même, le NCache offre aux utilisateurs la possibilité de parcourir leurs données via des requêtes LINQ, comme illustré ci-dessous.
1 2 3 4 |
IQueryable products = new NCacheQuery(cache); var result = from prod in products where prod.ProductID > 1001 select prod; |
De plus, vous pouvez personnaliser davantage ces requêtes à l'aide des logique, Agrégationet la Wildcard Opérations.
NCache Détails Requêtes SQL Requêtes LINQ
4. Code côté serveur
Souvent, les caches distribués aident simplement les applications à extraire les données de la base de données et à les insérer dans le cache. Cependant, une autre approche est celle où votre application délègue cette responsabilité au cache distribué. Essentiellement, lorsque votre application demande un élément du cache, elle détermine si l'élément en question existe ou non dans le cache et charge les données correspondantes à partir de la base de données. Cette fonction s'appelle lire à travers. NCache offre un semblable écrire à travers option, qui permet des opérations d'écriture directement sur la source de données via le cache.
Et NCache's fonctionnalité côté serveur va beaucoup plus loin avec le Cache Loader & Refresher. Cette fonctionnalité a réussi à surmonter l'écart de performances initial auquel tous les caches sont confrontés lors du démarrage, car ils sont vides pour commencer. Vous pouvez utiliser le chargeur pour identifier les données dont vous avez besoin et les précharger. Le rafraîchissement existe simplement pour s'assurer que ces données ne deviennent pas obsolètes.
NCahttps://www.alachisoft.com/ressources/docs/ncache/prog-guide/server-side-api-programming.htmlche fournit également un framework MapReduce complet où vous pouvez effectuer une analyse sur vos données mises en cache et produire des informations exploitables en temps réel. Le code MapReduce est écrit en .NET et s'exécute donc dans le NCache processus.
NCache Détails Réduire la carte NCache Chargeur et rafraîchisseur
5. Cache client (près du cache)
A Cache Client, est local sur votre serveur Web ou votre application et vous permet de mettre en cache les données fréquemment utilisées au sein du même processus ou de la même machine serveur. Ainsi, un cache client est un cache d'affinité, donnant à votre application une amélioration supplémentaire des performances en réduisant les coûts de bande passante réseau sans compromettre l'intégrité des données. Un cache client fonctionne avec tous NCache groupé topologies de mise en cache (Cache en miroir, partitionné et partition-réplica).
Pour ce faire, il reste connecté au cluster de cache et se synchronise en répliquant les modifications dans le cluster de cache principal. La différence entre AppFabric cache local et le NCache cache client est que AppFabric Le cache local est autonome et ne crée pas de connexion avec le cluster principal.
6. Prise en charge de plusieurs centres de données
La réplication WAN est une autre fonctionnalité essentielle pour les caches distribués en mémoire de haut calibre qui AppFabric manque. Il est particulièrement utile avec les centres de données géodistribués - pour la reprise après sinistre ou l'équilibrage de charge pour le trafic localisé.
NCache fournit des topologies Bridge pour gérer les latences WAN. La NCache Pont réplique et maintient la cohérence entre différents caches à travers le monde. Vous avez soit la possibilité de garder votre cluster de cache passif pour imiter une réplique de cluster pour la reprise après sinistre, soit de synchroniser deux caches distincts dans des centres de données différents. Les données sont répliquées de manière asynchrone sur des connexions Internet sécurisées.
NCache Détails Cache Client Réplication WAN
7. Grappe dynamique
Comme tout AppFabric clients sont probablement conscients, leur cluster n'est pas entièrement dynamique. La dépendance de Microsoft vis-à-vis de sa règle de la majorité des hôtes principaux signifie un cluster très faillible, qui tombe assez facilement si même l'un des hôtes principaux tombe en panne. Ces nœuds hôtes principaux ressemblent également à l'architecture maître-esclave et ne sont pas non plus entièrement peer-to-peer.
Alternativement, NCache is très dynamique et vous permet d'ajouter ou de supprimer des serveurs de cache au moment de l'exécution sans interruption. Les données sont automatiquement rééquilibrées (ou transféré par l'État) lors de l'exécution sans aucune dégradation des performances. NCache les clients maintiennent automatiquement le canal de communication avec les serveurs de cache, indépendamment de l'état du serveur. De plus, ses clusters de cache assurent l'exécution des opérations client même lorsque l'équilibrage des données (transfert d'état) est en cours.
Cela signifie qu'aucun nœud maître ou esclave n'existe dans le cluster. Il existe un nœud coordinateur principal qui est le nœud principal. Et s'il tombe en panne, le nœud le plus ancien suivant devient automatiquement le coordinateur principal. Tout cela se passe sans aucune interruption des opérations du client.
8. Intégrations tierces
Pour couronner le tout, NCache prend officiellement en charge les fournisseurs de différentes bibliothèques tierces importantes, telles que :
- Entity Framework Core Cache
- Cache du cadre d'entité
- NHibernate Cache de 2ème niveau
- Mise en cache de l'état de la session et de l'état de la vue ASP
Conclusion
En bref, NCache présente un large éventail de fonctionnalités que les entreprises utilisent et dont elles ont besoin dans leurs applications .NET. En particulier, ceux qui AppFabric n'ont pas eu le temps d'introduire à aucun moment de leur cycle de vie. Donc, si vous voulez mettre votre meilleur pied en avant et investir dans un système de mise en cache distribué qui répond vraiment à vos besoins, téléchargez NCache pour une migration sans douleur.
NCache Détails Télécharger NCache Comparaison Des Éditions