この章の内容は次のとおりです。
Coherence for .NETを使用すると、データ、データ・イベント、データ処理などのCoherenceクラスタ化サービスに、Coherenceクラスタ外部から.NETアプリケーションを使用してアクセスできます。Coherence for .NETは通常、Coherenceキャッシュへのアクセスを必要とするデスクトップ・アプリケーションやWebアプリケーションで使用されます。.NETクライアント・ディストリビューションのインストールの詳細は、『Oracle Coherenceのインストール』を参照してください。
Coherence for .NETは、Coherenceクラスタ内で稼働するCoherence*Extendクラスタ化サービス・インスタンスに、高性能なTCP/IPベースの通信レイヤーを使用して接続する軽量の.NETライブラリで構成されます。このライブラリからCoherence*Extendクラスタ化サービスにすべてのクライアント・リクエストが送信され、このサービスは実際のCoherenceクラスタ化サービス(パーティション・キャッシュ・サービス、レプリケート・キャッシュ・サービスなど)に委任することで、クライアント・リクエストに応答します。
INamedCache
インスタンスは、CacheFactory.GetCache(...)
APIコールを使用して取得されます。これが取得されると、クライアントはCoherenceクラスタに組み込まれている場合と同じようにINamedCache
にアクセスします。INamedCache
の操作はリモートのクラスタ・ノードに(TCP/IPを介して)送信されますが、この処理はクライアント・アプリケーションに対して完全に透過的に行われます。
この項では、Coherenceを使用するための.NETアプリケーションの設定手順を説明します。この項には次のトピックが含まれます:
Coherence for .NETを構成して使用するには、次の手順が必要です。
統合オブジェクトの構築(.NET) (『Oracle Coherenceでのアプリケーションの開発』も参照)
.NETクライアント・アプリケーションの起動
Coherence*Extendの構成の詳細は、次を参照してください。
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"> ...
CacheFactory
クラスを使用することによって、構成済キャッシュへの参照を名前によって取得できます。
INamedCache cache = CacheFactory.GetCache("example-local-cache");
すべてのINamedCache
実装のインスタンスは、LocalCache
を含め、不要になった時点でINamedCache.Release()
メソッドをコールして明示的に解放し、これらのインスタンスで保持されているリソースをすべて解放する必要があります。
特定のINamedCache
がアプリケーションの継続期間を通して使用される場合、リソースはそのアプリケーションがシャットダウンされたとき、または停止したときにクリーンアップされます。ただし、わずかの間だけ使用される場合は、使い終わった時点でアプリケーションからRelease()
メソッドをコールする必要があります。
または、INamedCache
がIDisposable
を拡張し、すべてのキャッシュ実装がIDisposable.Dispose()
のコールをINamedCache.Release()
に委任しているという事実を利用する方法もあります。単一メソッド内でキャッシュ・インスタンスを取得および解放する必要がある場合、次のusing
ブロックを使用してそれを実現できます。
using (INamedCache cache = CacheFactory.GetCache("my-cache")) { // use cache as usual }
using
ブロックが終了すると、INamedCache
インスタンスでIDisposable.Dispose()
がコールされ、そのインスタンスに関連付けられているすべてのリソースが解放されます。
ネットワーク・フィルタは、TCP/IPソケットを介して送信されるデータの変換を、プラガブルな階層化された方法で実行できるようにするメカニズムです。Coherence for .NETでは、カスタム・フィルタをサポートして、ユーザーがネットワーク・トラフィックの内容を変更できるようにしています。また一般に、データの圧縮および暗号化にもCoherence for .NETが使用されます。
この項には次のトピックが含まれます:
フィルタを作成するには、Tangosol.IO.IWrapperStreamFactory
インタフェース、およびオプションでTangosol.Util.IXmlConfigurable
インタフェースを実装する.NETクラスを作成します。IWrapperStreamFactory
インタフェースは、次の2つのメソッドを定義します。
Stream GetInputStream(Stream stream); Stream GetOutputStream(Stream stream);
この2つのメソッドは、ラップ(フィルタリング)対象のI/Oストリーム(入力では受信メッセージ、出力では送信メッセージ)を提供し、元のストリームをラップするストリームの返送を求めます。このメソッドは、個々の受信メッセージと送信メッセージに対してコールされます。
フィルタは2つの手順で構成します。最初に、オペレーション・オーバーライド・ファイルの<filters
XML要素でフィルタを宣言します。フィルタの構成方法の詳細は、『Oracle Coherenceでのアプリケーションの開発』を参照してください。
... <cluster-config> <filters> <filter> <filter-name>gzip</filter-name> <filter-class>Tangosol.Net.CompressionFilter, Coherence</filter-class> </filter> </filters> </cluster-config> ...
注意:
GZip圧縮フィルタは、.NETフレームワークのバージョン2.0以上でサポートされています。
2番目の手順では、1つ以上の特定のサービスにフィルタをアタッチします。特定のサービス(ExtendTcpCacheService
サービスなど)に対してフィルタを指定するには、キャッシュ構成ファイルのサービス宣言で、<use-filters>
要素に<filter-name>
要素を追加します。
... <remote-cache-scheme> <scheme-name>extend-direct</scheme-name> <service-name>ExtendTcpCacheService</service-name> <initiator-config> ... <use-filters> <filter-name>gzip</filter-name> </use-filters> ... </initiator-config> </remote-cache-scheme> ...
フィルタがIXmlConfigurable
を実装する場合は、フィルタがインスタンス化された後に、CoherenceでConfig
プロパティが次のXML要素に設定されます。
<config> <param1>value1</param1> <param2>value2</param2> </config>