ヘッダーをスキップ
Oracle® Coherenceクライアント・ガイド
リリース3.6.1
B61370-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

23 .NETクライアント用ネットワーク・フィルタの使用方法

ネットワーク・フィルタは、TCP/IPソケットを介して送信されるデータの変換を、プラッガブルな階層化された方法で実行できるようにするメカニズムです。Coherence for .NETでは、カスタム・フィルタをサポートして、ユーザーがネットワーク・トラフィックの内容を変更できるようにしています。また一般に、データの圧縮および暗号化にもCoherence for .NETが使用されます。

カスタム・フィルタ

新しいフィルタを作成するには、Tangosol.IO.IWrapperStreamFactoryインタフェース、およびオプションでTangosol.Util.IXmlConfigurableインタフェースを実装する.NETクラスを作成します。IWrapperStreamFactoryインタフェースは、次の2つのメソッドを定義します。

例23-1 IWrapperStreamFactoryインタフェースのメソッド

Stream GetInputStream(Stream stream);
Stream GetOutputStream(Stream stream);

この2つのメソッドは、ラップ(フィルタリング)対象のI/Oストリーム(入力では受信メッセージ、出力では送信メッセージ)を提供し、元のストリームをラップするストリームの返送を求めます。このメソッドは、個々の受信メッセージと送信メッセージに対してコールされます。

フィルタの構成

フィルタは2つの手順で構成します。最初の手順では、キャッシュ・ファクトリ構成ファイルの<filters> XML要素でフィルタを宣言します。これを例23-2に示します。

例23-2 フィルタの構成

<coherence>
  <cluster-config>
    <filters>
      <filter>
        <filter-name>gzip</filter-name>
        <filter-class>Tangosol.Net.CompressionFilter, Coherence</filter-class>
      </filter>
    </filters>
  </cluster-config>
...
</coherence>

注意:

GZip圧縮フィルタは、.NETフレームワークのバージョン2.0以上でサポートされています。

2番目の手順では、1つ以上の特定のサービスにフィルタをアタッチします。特定のサービス(ExtendTcpCacheServiceサービスなど)に対してフィルタを指定するには、キャッシュ構成ファイルのサービス宣言で、<use-filters>要素に<filter-name>要素を追加します。

例23-3 サービスへのフィルタのアタッチ

<remote-cache-scheme>
  <scheme-name>extend-direct</scheme-name>
  <service-name>ExtendTcpCacheService</service-name>
  <initiator-config>
    <tcp-initiator>
    ...
    </tcp-initiator>

    <outgoing-message-handler>
    ...
    </outgoing-message-handler>

    <use-filters>
      <filter-name>gzip</filter-name>
    </use-filters>

    ...
</remote-cache-scheme>

フィルタがIXmlConfigurableを実装する場合は、フィルタがインスタンス化された後に、CoherenceでConfigプロパティが次のXML要素に設定されます。

例23-4 IXmlConfigurableを実装するフィルタに対する構成プロパティの設定

<config>
  <param1>value1</param1>
  <param2>value2</param2>
</config>