오늘날 많은 기업들이 기업 환경에서 .NET과 Java 애플리케이션을 모두 실행하고 있습니다. 종종 이러한 애플리케이션은 런타임에 서로 데이터를 공유해야 합니다. 오늘날 그들이 하는 가장 일반적인 방법은 데이터를 데이터베이스에 저장하고 다른 응용 프로그램이 이를 폴링하고 찾도록 하는 것입니다. 어떤 사람들은 Java 응용 프로그램이 .NET 응용 프로그램에서 또는 그 반대로 데이터를 얻을 수 있도록 하기 위한 목적으로만 웹 서비스를 개발하기도 합니다.
첫 번째 접근 방식의 문제는 다른 "소비자" 응용 프로그램이 데이터베이스를 폴링해야 하기 때문에 데이터 공유가 즉시 발생할 수 없다는 것입니다. 이 작업은 미리 결정된 간격 후에 발생합니다. 또한 데이터를 위해 데이터베이스에 액세스하는 모든 애플리케이션과 같은 성능 및 확장성 문제가 있습니다. 아시다시피 데이터베이스는 오늘날의 애플리케이션과 같은 방식으로 확장할 수 없습니다. 애플리케이션 서버를 추가하여 애플리케이션 계층을 선형으로 확장할 수 있지만 데이터베이스 계층에서는 동일한 작업을 수행할 수 없기 때문입니다.
두 번째 접근 방식은 많은 사용자 지정 프로그래밍이 필요하며 .NET이든 Java이든 상관없이 다른 응용 프로그램과 데이터를 공유할 수 있도록 기본적으로 응용 프로그램 아키텍처를 변경해야 합니다. 데이터 공유를 위한 사용자 지정 프레임워크 생성에 대해 걱정하지 않고 구축 중인 목적을 위해 각 애플리케이션을 계속 개발할 수 있다면 훨씬 좋을 것입니다.
두 번째 접근 방식은 많은 사용자 지정 프로그래밍이 필요하며 .NET이든 Java이든 상관없이 다른 응용 프로그램과 데이터를 공유할 수 있도록 기본적으로 응용 프로그램 아키텍처를 변경해야 합니다. 데이터 공유를 위한 사용자 지정 프레임워크 생성에 대해 걱정하지 않고 구축 중인 목적을 위해 각 애플리케이션을 계속 개발할 수 있다면 훨씬 좋을 것입니다.
이상적으로는 이벤트 기반 모델 여기서 .NET 응용 프로그램은 Java 응용 프로그램에 대한 데이터가 있을 때마다 또는 그 반대의 경우에도 알림을 받을 수 있습니다. 그러나 아시다시피 .NET과 Java는 이러한 종류의 사용에 본질적으로 호환되지 않습니다.
다음과 같은 분산 캐시가 있는 곳입니다. NCache 정말 편리합니다. NCache 플랫폼 독립적이며 .NET과 Java 간에 공유할 수 있는 이벤트를 제공합니다. NCache 또한 .NET과 Java 간의 바이너리 레벨 데이터 유형 호환성을 제공합니다. 이를 통해 데이터 공유 목적으로 XML 기반 변환을 거치지 않고도 이벤트뿐만 아니라 객체 형태의 해당 데이터 및 모든 것을 수신할 수 있습니다.
NCache 이벤트 알림 프레임워크를 사용하면 캐시 클러스터 내에서 다양한 유형의 이벤트가 발생할 때 알림을 받도록 등록할 수 있습니다. 이렇게 하면 .NET 또는 Java 애플리케이션에 의해 데이터가 변경될 때마다 애플리케이션에 알림이 전송됩니다. 다음은 다음을 사용하는 샘플 코드입니다. NCache 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 항목 추가, 항목 제거 및 항목 업데이트와 같은 다양한 캐시된 항목 수준 알림을 제공합니다. 응용 프로그램은 다양한 캐시 항목 키(아직 캐시에 있을 수도 있고 없을 수도 있음)에 관심을 등록할 수 있으며, 어떤 이유로든 해당 항목이 분산 캐시에서 추가, 업데이트 또는 제거될 때마다 별도로 알림을 받습니다. 예를 들어 만료 또는 퇴거로 인해 항목이 제거된 경우에도 item-remove 이벤트 알림이 발생합니다.
.NET 및 Java 애플리케이션 모두 동일한 캐시 항목에 대한 관심을 등록하고 이에 대한 알림을 받을 수 있습니다. 알림에는 응용 프로그램 유형에 따라 .NET 또는 Java로 변환되는 영향을 받는 캐시 항목도 포함됩니다.
다음은 사용하는 샘플 코드입니다. NCache .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); } |
요약하면, NCache 런타임에 .NET과 Java 응용 프로그램 간에 데이터를 공유할 수 있을 뿐만 아니라 분산 이벤트를 사용하여 응용 프로그램에 데이터 변경 사항을 알릴 수도 있습니다.
따라서 완전히 작동하는 60일 평가판을 다운로드하십시오. NCache Enterprise 그리고 직접 사용해 보세요.