Actualmente, muchas empresas ejecutan aplicaciones .NET y Java en su entorno empresarial. A menudo, estas aplicaciones necesitan compartir datos entre sí en tiempo de ejecución. La forma más común en que lo hacen hoy en día es almacenando los datos en la base de datos y haciendo que la otra aplicación los sondee y los busque. Algunas personas también desarrollan servicios web con el único fin de permitir que las aplicaciones Java obtengan datos de las aplicaciones .NET y viceversa.
El problema con el primer enfoque es que el intercambio de datos no puede ocurrir instantáneamente porque la otra aplicación de "consumidor" tiene que sondear la base de datos, lo que sucede después de un intervalo predeterminado. También tiene problemas de rendimiento y escalabilidad como cualquier aplicación que acceda a la base de datos para obtener datos. Como sabe, una base de datos no puede escalar de la misma manera que lo hacen las aplicaciones actuales. Esto se debe a que, aunque puede escalar linealmente un nivel de aplicación agregando más servidores de aplicaciones, no puede hacer lo mismo en el nivel de la base de datos.
El segundo enfoque requiere mucha programación personalizada y esencialmente cambiar la arquitectura de su aplicación solo para que pueda compartir datos con otras aplicaciones, ya sean .NET o Java. Sería mucho mejor si pudiera continuar desarrollando cada aplicación con el propósito de que se esté construyendo y no preocuparse por crear un marco personalizado para compartir datos.
El segundo enfoque requiere mucha programación personalizada y esencialmente cambiar la arquitectura de su aplicación solo para que pueda compartir datos con otras aplicaciones, ya sean .NET o Java. Sería mucho mejor si pudiera continuar desarrollando cada aplicación con el propósito de que se esté construyendo y no preocuparse por crear un marco personalizado para compartir datos.
Idealmente, le gustaría tener un modelo basado en eventos donde una aplicación .NET puede ser notificada cada vez que una aplicación Java tiene datos para ella y viceversa. Pero, como sabe, .NET y Java no son inherentemente compatibles para este tipo de uso.
Aquí es donde un caché distribuido como NCache viene muy bien. NCache proporciona eventos que son independientes de la plataforma y se pueden compartir entre .NET y Java. NCache también proporciona compatibilidad de tipos de datos de nivel binario entre .NET y Java. Esto le permite no solo recibir eventos, sino también los datos correspondientes en forma de objetos y todo eso sin tener que pasar por ninguna transformación basada en XML para compartir datos.
NCache El marco de notificación de eventos le permite registrarse para recibir notificaciones cuando se produzcan diferentes tipos de eventos dentro del clúster de caché. De esta manera, cada vez que se realicen cambios en los datos, ya sea por aplicaciones .NET o Java, su aplicación será notificada. Aquí hay un código de muestra usando NCache evento basado en elementos para compartir datos 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 le proporciona diferentes notificaciones de nivel de elementos almacenados en caché, como elementos agregados, elementos eliminados y elementos actualizados. Las aplicaciones pueden registrar interés en varias claves de elementos almacenados en caché (que pueden existir o no en el caché todavía), y se les notifica por separado cada vez que alguien agrega, actualiza o elimina ese elemento del caché distribuido por cualquier motivo. Por ejemplo, incluso si un elemento se elimina debido a su vencimiento o desalojo, se activa la notificación de evento de eliminación de elementos.
Tanto las aplicaciones .NET como Java pueden registrar interés por los mismos elementos almacenados en caché y recibir notificaciones al respecto. La notificación también incluye el elemento almacenado en caché afectado, que se transforma en .NET o Java, según el tipo de aplicación.
Aquí hay un código de muestra del uso NCache evento basado en elementos para compartir datos en .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 resumen, con NCache no solo puede compartir datos entre aplicaciones .NET y Java en tiempo de ejecución, sino que también puede usar eventos distribuidos para notificar a las aplicaciones sobre cualquier cambio en los datos.
Por lo tanto, descargue una versión de prueba de 60 días totalmente funcional de NCache Enterprise y pruébalo por ti mismo.