17 Coherence .NETクライアントの概要

Coherence for .NETおよびCoherence .NETアプリケーションの設定方法について学習します。

この章の内容は次のとおりです。

Coherence for .NETの概要

Coherence for .NETを使用すると、データ、データ・イベント、データ処理などのCoherenceクラスタ化サービスに、Coherenceクラスタ外部から.NETアプリケーションを使用してアクセスできます。Coherence for .NETは通常、Coherenceキャッシュへのアクセスを必要とするデスクトップ・アプリケーションやWebアプリケーションで使用されます。『Oracle Coherenceのインストール』.NETクライアント・ディストリビューションのインストールに関する項を参照してください。

Coherence for .NETは、Coherenceクラスタ内で稼働するCoherence*Extendクラスタ化サービス・インスタンスに、高性能なTCP/IPベースの通信レイヤーを使用して接続する軽量の.NETライブラリで構成されます。このライブラリからCoherence*Extendクラスタ化サービスにすべてのクライアント・リクエストが送信され、このサービスは実際のCoherenceクラスタ化サービス(パーティション・キャッシュ・サービス、レプリケート・キャッシュ・サービスなど)に委任することで、クライアント・リクエストに応答します。

INamedCacheインスタンスは、CacheFactory.GetCache(...) APIコールを使用して取得されます。これが取得されると、クライアントはCoherenceクラスタに組み込まれている場合と同じようにINamedCacheにアクセスします。INamedCacheの操作はリモートのクラスタ・ノードに(TCP/IPを介して)送信されますが、この処理はクライアント・アプリケーションに対して完全に透過的に行われます。

.NETクライアントの構成と使用

Coherence .NETクライアントの使用に必要な主要なステップを学習します。

この項では、Coherenceを使用するための.NETアプリケーションの設定手順を説明します。この項には次のトピックが含まれます:

一般的な手順

Coherence .NETクライアントの作成および使用のための基本的な一連のステップをたどることができます。一般的なステップは次のとおりです。

  1. Coherence*Extend for .NETの構成

  2. 統合オブジェクトの構築(.NET)

  3. Coherence .NET APIの使用

  4. プロキシ・サーバーの起動

  5. .NETクライアント・アプリケーションの起動

Coherence*Extend for .NETの構成

Coherence for .NETクライアントでは、Coherenceキャッシュ構成ファイルに特定のXMLスキーマを使用します。キャッシュ構成ファイルで次のスキーマが使用されていることを確認します。

<cache-config xmlns="http://schemas.tangosol.com/cache"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://schemas.tangosol.com/cache
  assembly://Coherence/Tangosol.Config/cache-config.xsd">
  ...

Coherence*Extendの設定および構成に関する一般的な手順は、次を参照してください。

.NETによるキャッシュ参照の取得

CacheFactoryクラスを使用することによって、構成済キャッシュへの参照を名前によって取得できます。

INamedCache cache = CacheFactory.GetCache("example-local-cache");

キャッシュに関連付けられたリソースのクリーンアップ

LocalCacheを含め、INamedCacheインスタンスは、不要になったときにINamedCache.Releaseメソッドをコールして明示的に解放する必要があります。特定のINamedCacheがアプリケーションの継続期間を通して使用される場合、リソースはそのアプリケーションがシャットダウンされたとき、または停止したときにクリーンアップされます。ただし、そのインスタンスを使用するのが一定期間のみである場合は、アプリケーションで、使用が終わったらそのReleaseメソッドをコールする必要があります。

または、INamedCacheIDisposableを拡張し、すべてのキャッシュ実装がIDisposable.DisposeのコールをINamedCache.Releaseに委任しているという事実を利用する方法もあります。単一メソッド内でキャッシュ・インスタンスを取得および解放する必要がある場合、次のusingブロックを使用してそれを実現できます。

using (INamedCache cache = CacheFactory.GetCache("my-cache"))
{
   // use cache as usual
}

usingブロックが終了すると、INamedCacheインスタンスでIDisposable.Disposeがコールされ、そのインスタンスに関連付けられているすべてのリソースが解放されます。