2.1.19 サービス関数とスタブの関係

SPPまたはMHPでサービス関数を作成する方法は,次の二つです。

  1. スタブを使用して,該当するサービス関数を作成する方法
  2. サービス関数動的ローディング機能を使用して,サービス関数を作成する方法

ここでは,上記の二つの方法について説明します。

<この項の構成>
(1) スタブを使用する場合
(2) サービス関数動的ローディング機能を使用する場合

(1) スタブを使用する場合

RPCを使ってUAP間で通信するときには,スタブが必要です。スタブとは,クライアントUAPが指定した「サービスグループ名+サービス名」とサーバUAPのサービスとを対応づけるプログラムです。

スタブではUAPの各サービスの入り口点エントリポイント)を指定します。

スタブはサーバUAPの作成時に,サーバUAPのオブジェクトファイルと結合させます。

クライアント専用のUAPであるSUPと,オフラインの業務をするUAPには,スタブを定義して結合させる必要はありません。

スタブを使用してサービス関数を作成する方法について,SPPの場合とMHPの場合に分けてそれぞれ以降の図に示します。

図2-18 スタブを使用する場合(SPP)

[図データ]

  1. RPCインタフェース定義にサービス関数のエントリポイントを指定して,スタブを生成するコマンドでスタブを生成します。
    ユーザサービス定義では,サービスグループ名とサービス名を指定します。
  2. 実行時には,サービスを要求されたサーバUAPの実行形式ファイルでは,スタブとユーザサービス定義によって作成されたライブラリ部で,該当のサービスを検索します。その後サービスの処理をしてクライアントUAPに結果を返します。

 

図2-19 スタブを使用する場合(MHP)

[図データ]

  1. RPCインタフェース定義にサービス関数のエントリポイントを指定して,スタブを生成するコマンドでスタブを生成します。
    MCFアプリケーション定義では,アプリケーション名,サービスグループ名,およびサービス名を対応づけます。ユーザサービス定義では,サービスグループ名とサービス名を指定します。
  2. 実行時には,TP1/Message Controlの処理によって,MCFアプリケーション定義に基づきアプリケーション名に対応するサービス名が検索され,該当するサーバUAPを起動します。サービスを要求されたサーバUAPの実行形式ファイルでは,スタブとユーザサービス定義によって作成されたライブラリ部で,該当のサービスを検索します。その後サービスの処理をし,処理の完了をTP1/Message Controlに通知します。

(2) サービス関数動的ローディング機能を使用する場合

サービス関数動的ローディング機能を使う場合,UAPの各サービスの入り口点エントリポイント)を指定したUAPライブラリからサービス関数を取得するため,スタブは不要です。その代わりに,サービス関数を共用ライブラリ化してUAP共用ライブラリを作成する必要があります。これによって,UAP共用ライブラリからサービス関数を取得できるとともに,複数のサービスをメイン関数にまとめる作業は不要になります。

注※
UAP共用ライブラリとは,UAPのソースファイルを翻訳(コンパイル)して作成したUAPオブジェクトファイルを結合(リンケージ)して,共用ライブラリとしてまとめたものです。

サービス関数動的ローディング機能を使用してサービス関数を作成する方法について,SPPの場合とMHPの場合に分けてそれぞれ以降の図に示します。

図2-20 サービス関数動的ローディング機能だけを使用する場合(SPP)

[図データ]

図2-21 サービス関数動的ローディング機能だけを使用する場合(MHP)

[図データ]

なお,サービス関数動的ローディング機能は,スタブを使ったUAPでも使用できます。この場合,スタブを使ったUAPを変更しないで,サービス関数を追加できます。

サービス関数動的ローディング機能とスタブを併用してサービス関数を作成する方法について,SPPの場合とMHPの場合に分けてそれぞれ以降の図に示します。

図2-22 サービス関数動的ローディング機能とスタブを併用する場合(SPP)

[図データ]

図2-23 サービス関数動的ローディング機能とスタブを併用する場合(MHP)

[図データ]