プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Coherenceリモート・クライアントの開発
12c (12.2.1)
E69907-02
目次へ移動
目次

前
次

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

この章では、Coherence for .NETと、Coherence for .NETを使用するための.NETアプリケーションの設定手順を説明します。

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

Coherence for .NETの概要

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を介して)送信されますが、この処理はクライアント・アプリケーションに対して完全に透過的に行われます。

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

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

一般的な手順

Coherence for .NETを構成して使用するには、次の手順が必要です。

  1. Coherence*Extend for .NETの構成

  2. 統合オブジェクトの構築(.NET) (『Oracle Coherenceでのアプリケーションの開発』も参照)

  3. Coherence .NET APIの使用

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

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

Coherence*Extend for .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">
  ...

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

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

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

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

すべてのINamedCache実装のインスタンスは、LocalCacheを含め、不要になった時点で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()がコールされ、そのインスタンスに関連付けられているすべてのリソースが解放されます。

ネットワーク・フィルタの使用

ネットワーク・フィルタは、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>