最近では、多くの企業がエンタープライズ環境で.NETアプリケーションとJavaアプリケーションの両方を実行しています。 多くの場合、これらのアプリケーションは実行時に相互にデータを共有する必要があります。 彼らが今日それを行う最も一般的な方法は、データベースにデータを保存し、他のアプリケーションにポーリングしてそれを探すことです。 また、Javaアプリケーションが.NETアプリケーションからデータを取得できるようにすることだけを目的としてWebサービスを開発している人もいます。その逆も同様です。
最初のアプローチの問題は、他の「コンシューマー」アプリケーションがデータベースをポーリングする必要があるため、データ共有を即座に実行できないことです。これは、所定の間隔の後に発生します。 また、データのためにデータベースにアクセスするアプリケーションと同様に、パフォーマンスとスケーラビリティの問題もあります。 ご存知のように、データベースは、今日のアプリケーションと同じように拡張することはできません。 これは、アプリケーションサーバーを追加することでアプリケーション層を線形にスケーリングできますが、データベース層では同じことができないためです。
XNUMX番目のアプローチでは、多くのカスタムプログラミングが必要であり、.NETまたはJavaに関係なく、他のアプリケーションとデータを共有できるように、アプリケーションのアーキテクチャを基本的に変更する必要があります。 データ共有用のカスタムフレームワークを作成することを心配せずに、構築中の目的で各アプリケーションを開発し続けることができれば、はるかに良いでしょう。
XNUMX番目のアプローチでは、多くのカスタムプログラミングが必要であり、.NETまたはJavaに関係なく、他のアプリケーションとデータを共有できるように、アプリケーションのアーキテクチャを基本的に変更する必要があります。 データ共有用のカスタムフレームワークを作成することを心配せずに、構築中の目的で各アプリケーションを開発し続けることができれば、はるかに良いでしょう。
理想的には、 イベント駆動型モデル ここで、Javaアプリケーションにデータがある場合はいつでも.NETアプリケーションに通知でき、その逆も可能です。 ただし、ご存知のように、.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 アイテムの追加、アイテムの削除、アイテムの更新など、さまざまなキャッシュされたアイテムレベルの通知を提供します。 アプリケーションは、さまざまなキャッシュアイテムキー(キャッシュにまだ存在する場合と存在しない場合があります)への関心を登録でき、そのアイテムが何らかの理由で分散キャッシュに追加、更新、または削除されるたびに、個別に通知されます。 たとえば、有効期限や削除によってアイテムが削除された場合でも、アイテム削除イベント通知が発生します。
.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 自分で試してみてください。