この章の内容は次のとおりです。
親トピック: .NET Extendクライアントの作成
Coherence for .NETは、Coherenceクラスタ内で稼働するCoherence*Extendクラスタ化サービス・インスタンスに、高性能なTCP/IPベースの通信レイヤーを使用して接続する軽量の.NETライブラリで構成されます。このライブラリからCoherence*Extendクラスタ化サービスにすべてのクライアント・リクエストが送信され、このサービスは実際のCoherenceクラスタ化サービス(パーティション・キャッシュ・サービス、レプリケート・キャッシュ・サービスなど)に委任することで、クライアント・リクエストに応答します。
INamedCache
インスタンスは、CacheFactory.GetCache(...)
APIコールを使用して取得されます。これが取得されると、クライアントはCoherenceクラスタに組み込まれている場合と同じようにINamedCache
にアクセスします。INamedCache
の操作はリモートのクラスタ・ノードに(TCP/IPを介して)送信されますが、この処理はクライアント・アプリケーションに対して完全に透過的に行われます。
この項では、Coherenceを使用するための.NETアプリケーションの設定手順を説明します。この項には次のトピックが含まれます:
Coherence .NETクライアントの作成および使用のための基本的な一連の手順をたどることができます。一般的な手順は次のとおりです。
.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の設定および構成に関する一般的な手順は、次を参照してください。
CacheFactory
クラスを使用することによって、構成済キャッシュへの参照を名前によって取得できます。
INamedCache cache = CacheFactory.GetCache("example-local-cache");
LocalCache
を含め、INamedCache
インスタンスは、不要になったときに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でのアプリケーションの開発』のfilterに関する項を参照してください。
... <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>