Heutzutage führen viele Unternehmen sowohl .NET- als auch Java-Anwendungen in ihrer Unternehmensumgebung aus. Häufig müssen diese Anwendungen zur Laufzeit Daten miteinander teilen. Am häufigsten tun sie dies heute, indem sie die Daten in der Datenbank speichern und die andere Anwendung abfragen und danach suchen lässt. Einige Leute entwickeln Webservices auch nur zu dem Zweck, Java-Anwendungen zu ermöglichen, Daten von .NET-Anwendungen zu erhalten und umgekehrt.
Das Problem beim ersten Ansatz besteht darin, dass die gemeinsame Nutzung von Daten nicht sofort erfolgen kann, da die andere „Verbraucher“-Anwendung die Datenbank abfragen muss, was nach einem festgelegten Intervall geschieht. Es hat auch Leistungs- und Skalierbarkeitsprobleme wie jede Anwendung, die auf die Datenbank für Daten zugreift. Wie Sie wissen, kann eine Datenbank nicht so skaliert werden wie heutige Anwendungen. Denn obwohl Sie eine Anwendungsebene durch Hinzufügen weiterer Anwendungsserver linear skalieren können, können Sie dies nicht auf der Datenbankebene tun.
Der zweite Ansatz erfordert eine Menge benutzerdefinierter Programmierung und eine wesentliche Änderung der Architektur Ihrer Anwendung, nur damit Sie Daten mit anderen Anwendungen teilen können, egal ob es sich um .NET oder Java handelt. Es wäre viel schöner, wenn Sie jede Anwendung für den Zweck, für den sie erstellt wird, weiter entwickeln könnten und sich nicht um die Erstellung eines benutzerdefinierten Frameworks für die gemeinsame Nutzung von Daten kümmern könnten.
Der zweite Ansatz erfordert eine Menge benutzerdefinierter Programmierung und eine wesentliche Änderung der Architektur Ihrer Anwendung, nur damit Sie Daten mit anderen Anwendungen teilen können, egal ob es sich um .NET oder Java handelt. Es wäre viel schöner, wenn Sie jede Anwendung für den Zweck, für den sie erstellt wird, weiter entwickeln könnten und sich nicht um die Erstellung eines benutzerdefinierten Frameworks für die gemeinsame Nutzung von Daten kümmern könnten.
Idealerweise möchten Sie eine haben Ereignisgesteuertes Modell wo eine .NET-Anwendung benachrichtigt werden kann, wenn eine Java-Anwendung Daten für sie hat und umgekehrt. Aber wie Sie wissen, sind .NET und Java für diese Art der Verwendung nicht von Natur aus kompatibel.
Hier kommt ein verteilter Cache zum Einsatz NCache kommt wirklich praktisch. NCache stellt plattformunabhängige Ereignisse bereit, die von .NET und Java gemeinsam genutzt werden können. NCache bietet außerdem Datentypkompatibilität auf Binärebene zwischen .NET und Java. Auf diese Weise können Sie nicht nur Ereignisse, sondern auch entsprechende Daten in Form von Objekten empfangen, und das alles, ohne eine XML-basierte Transformation zum Zwecke des Datenaustauschs durchlaufen zu müssen.
NCache Event Notification Framework ermöglicht es Ihnen, sich zu registrieren, um benachrichtigt zu werden, wenn verschiedene Arten von Ereignissen innerhalb des Cache-Clusters auftreten. Auf diese Weise wird Ihre Anwendung benachrichtigt, wenn Änderungen an den Daten vorgenommen werden, entweder durch .NET- oder Java-Anwendungen. Hier ist Beispielcode mit NCache Elementbasiertes Ereignis für die gemeinsame Nutzung von Daten in 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 bietet Ihnen verschiedene Benachrichtigungen auf zwischengespeicherter Elementebene wie Element hinzugefügt, Element entfernt und Element aktualisiert. Anwendungen können Interesse an verschiedenen zwischengespeicherten Elementschlüsseln anmelden (die im Cache vorhanden sein können oder noch nicht), und sie werden separat benachrichtigt, wenn dieses Element von irgendjemandem aus irgendeinem Grund hinzugefügt, aktualisiert oder aus dem verteilten Cache entfernt wird. Selbst wenn beispielsweise ein Element aufgrund von Ablaufdatum oder Räumung entfernt wird, wird die Ereignisbenachrichtigung zum Entfernen von Elementen ausgelöst.
Sowohl .NET- als auch Java-Anwendungen können Interesse an denselben zwischengespeicherten Elementen registrieren und darüber benachrichtigt werden. Die Benachrichtigung enthält auch das betroffene zwischengespeicherte Element, das je nach Anwendungstyp entweder in .NET oder Java umgewandelt wird.
Hier ist ein Beispielcode für die Verwendung NCache Elementbasiertes Ereignis für die gemeinsame Nutzung von Daten in .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); } |
Zusammenfassend mit NCache Sie können Daten nicht nur zur Laufzeit zwischen .NET- und Java-Anwendungen austauschen, sondern auch verteilte Ereignisse verwenden, um Anwendungen über Datenänderungen zu informieren.
Laden Sie also eine voll funktionsfähige 60-Tage-Testversion von herunter NCache Enterprise und probiere es selbst aus.