碧クライアント - 拡張ポイント

拡張ポイントについて

midoriClientでは主な振る舞いを決めるコンポーネントは置き換え可能になっているので、ユーザがそれぞれのアプリケーション形態、環境にあわせてコンポーネントを入れ替える事ができます。

シリアライザ(RPCSerializer)

シリアライザは、RPC形式に応じたシリアライズ・デシリアライズ処理を行う仕組みです。
RPC形式1つ1つに対して、それに対応するシリアライザを用意するという仕組みになっています。
シリアライザを自作することにより、対応するRPC形式を増やしたり、標準でサポートしているRPC形式に対しても動作を変更したりすることがすることができます。
シリアライザを実装する際には、jp.fores.midori.client.serializer.RPCSerializerインターフェースを実装したクラスを作成して下さい。

インターフェースで実装するメソッドは以下の通りです。

メソッド名 説明
getContentType Content-Typeを取得します。
この値はリクエスト送信時に、リクエストヘッダに設定されます。
inputDtoToOutputStream RPCの入力データを格納するためのDTOクラスの内容を、出力ストリームに出力します。
handleRPCResponseInputStream レスポンスの入力ストリームを処理して、リモートプロシージャコールの戻り値を取得します。
レスポンスのエラーチェックもこのメソッドで行います。

ハンドラ(RPCHandler)

ハンドラは、RPCを行う際に使用する通信処理を切り替えるための仕組みです。
ハンドラを自作することにより、より効率的な通信ライブラリを使ったり、特定の状況に最適化した通信ロジックを実装したりすることができます。
ハンドラを実装する際には、jp.fores.midori.client.handler.RPCHandlerインターフェースを実装したクラスを作成して下さい。

インターフェースで実装するメソッドは以下の通りです。

メソッド名 説明
execute RPCを行います。
リクエスト送信からレスポンスの受信までの一連の処理を実装して下さい。
GZIP対応処理なども、このメソッドで実装して下さい。

RPCClientCaller

RPCClientCallerは、複数のサーバーに対してRPCを行うための仕組みです。
RPCClientCallerを自作することにより、サーバーの呼び出し方や、エラー時の対応方法などをカスタマイズすることができます。
RPCClientCallerを実装する際には、jp.fores.midori.client.caller.RPCClientCallerインターフェースを実装したクラスを作成するか、jp.fores.midori.client.caller.AbstractRPCClientCallerクラスを継承したクラスを作成して下さい。
共通処理が実装されているAbstractRPCClientCallerクラスを継承する方がお勧めです。

インターフェースで実装するメソッドは以下の通りです。

メソッド名 説明
remoteCall 複数のサーバーに対してリモートRPCを行います。
このメソッドは戻り値の型指定を行うタイプと、行わないタイプの二種類がありますが、AbstractRPCClientCallerクラスを継承する場合は、型指定を行うタイプについてはすでに実装されています。

URLListGetter

URLListGetterは、RPCClientCallerを使って複数のサーバーに対してRPCを行う際に、対象のURLを指定するための仕組みです。
URLListGetterを自作することにより、設定ファイルやDNSの情報を元に対象のURLを決定したりすることができます。
URLListGetterを実装する際には、jp.fores.midori.client.caller.URLListGetterインターフェースを実装したクラスを作成して下さい。

インターフェースで実装するメソッドは以下の通りです。

メソッド名 説明
getURLList URLのリストを返します。
このメソッドは、RPCClientCallerで呼び出し対象のサーバーのURLのリストを取得する際に呼び出されます。