De nos jours, de nombreuses entreprises exécutent à la fois des applications .NET et Java dans leur environnement d'entreprise. Souvent, ces applications doivent partager des données entre elles lors de l'exécution. La façon la plus courante de le faire aujourd'hui consiste à stocker les données dans la base de données et à demander à l'autre application de les interroger et de les rechercher. Certaines personnes développent également des services Web uniquement dans le but de permettre aux applications Java d'obtenir des données à partir d'applications .NET et vice versa.
Le problème avec la première approche est que le partage de données ne peut pas se produire instantanément car l'autre application "consommateur" doit interroger la base de données, ce qui se produit après un intervalle prédéterminé. Il a également des problèmes de performances et d'évolutivité comme toute application accédant à la base de données pour les données. Comme vous le savez, une base de données ne peut pas évoluer de la même manière que les applications d'aujourd'hui. En effet, même si vous pouvez mettre à l'échelle linéairement un niveau d'application en ajoutant plus de serveurs d'applications, vous ne pouvez pas faire de même au niveau de la base de données.
La deuxième approche nécessite beaucoup de programmation personnalisée et modifie essentiellement l'architecture de votre application afin que vous puissiez partager des données avec d'autres applications, qu'elles soient .NET ou Java. Ce serait bien mieux si vous pouviez continuer à développer chaque application dans le but pour lequel elle est construite et ne pas vous soucier de créer un cadre personnalisé pour le partage de données.
La deuxième approche nécessite beaucoup de programmation personnalisée et modifie essentiellement l'architecture de votre application afin que vous puissiez partager des données avec d'autres applications, qu'elles soient .NET ou Java. Ce serait bien mieux si vous pouviez continuer à développer chaque application dans le but pour lequel elle est construite et ne pas vous soucier de créer un cadre personnalisé pour le partage de données.
Idéalement, vous voudriez avoir un modèle événementiel où une application .NET peut être notifiée chaque fois qu'une application Java a des données pour elle et vice versa. Mais, comme vous le savez, .NET et Java ne sont pas intrinsèquement compatibles pour ce type d'utilisation.
C'est là qu'un cache distribué comme NCache est vraiment pratique. NCache fournit des événements indépendants de la plate-forme et pouvant être partagés entre .NET et Java. NCache fournit également une compatibilité de type de données de niveau binaire entre .NET et Java. Cela vous permet non seulement de recevoir des événements, mais également des données correspondantes sous forme d'objets et tout cela sans avoir à passer par une transformation basée sur XML à des fins de partage de données.
NCache L'infrastructure de notification d'événements vous permet de vous inscrire pour être averti lorsque différents types d'événements se produisent dans le cluster de cache. De cette façon, chaque fois que des modifications sont apportées aux données, que ce soit par des applications .NET ou Java, votre application est avertie. Voici un exemple de code utilisant NCache événement basé sur un élément pour le partage de données en Java :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import com.alachisoft.ncache.web.caching.*; public void AddToCache() { CacheEventListener onItemRemoved = new CacheEventListner(); Cache cache = NCache.initializeCache("PORCache"); Employee emp = new Employee(); emp.setDept("Mechanical"); CacheItem cItem = new CacheItem(emp); cItem.setItemRemoveCallback(onItemRemoved); cache.insert("EMP-1000-ENG", cItem); } public class CacheEventListner implements CacheItemRemovedCallback { ... public void itemRemoved(String key, Object value, CacheItemRemovedReason reason) { Employee emp = (Employee) key; System.out.println("Employee Removed " + key + "Dept" + emp.getDept()); } ... } |
NCache vous fournit différentes notifications au niveau de l'élément mis en cache, telles que l'élément ajouté, l'élément supprimé et l'élément mis à jour. Les applications peuvent s'intéresser à diverses clés d'éléments mis en cache (qui peuvent ou non exister encore dans le cache), et elles sont notifiées séparément chaque fois que cet élément est ajouté, mis à jour ou supprimé du cache distribué par quiconque pour une raison quelconque. Par exemple, même si un élément est supprimé en raison d'une expiration ou d'une éviction, la notification d'événement de suppression d'élément est déclenchée.
Les applications .NET et Java peuvent enregistrer un intérêt pour les mêmes éléments mis en cache et en être informées. La notification inclut également l'élément mis en cache affecté, qui est transformé en .NET ou Java, selon le type d'application.
Voici un exemple de code d'utilisation NCache événement basé sur un élément pour le partage de données dans .NET :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
public void AddToCache() { Cache cache = NCache.InitializeCache("PORCache"); Employee emp = new Employee(); emp.Name = "David Rox"; emp.Dept = "Engineering"; ... cache.Insert("EMP-1000-ENG", emp, null, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration,CacheItemPriority.Default); //Register Callback to get notified of changes related to provided key cache.RegisterKeyNotificationCallback("EMP-1000-ENG", new CacheItemUpdatedCallback(OnItemUpdated), newCacheItemRemovedCallback(OnItemRemoved)); } ... void OnItemRemoved(string key, object value,CacheItemRemovedReason reason) { //Item is removed. Do something Employee emp = (Employee) value; Console.WriteLine("Employee Removed {0}, Name {1}", key, emp.Dept); } |
En résumé, avec NCache vous pouvez non seulement partager des données entre les applications .NET et Java lors de l'exécution, mais également utiliser des événements distribués pour notifier aux applications toute modification des données.
Alors, téléchargez une version d'essai complète de 60 jours de NCache Enterprise et essayez-le par vous-même.