2.1.1 リモートプロシジャコールの実現方法
クライアントUAPから,サービスを要求する関数を使ってSPPのサービスを要求できます。UAPからサービスを要求するときは,サーバUAPのサービスグループ名※とサービス名を引数に設定したdc_rpc_call関数【CBLDCRPC('CALL ')】を呼び出します。要求されるサービスが,クライアントUAPと別のノードにあっても同じノードにあってもかまいません。要求されるサービスがどのノードにあるかは,OpenTP1のネームサービスで管理しているので,UAPで意識する必要はありません。
- 注※
-
サービスグループ名をドメイン修飾して設定することで,設定したドメイン内のサーバUAPへサービスを要求することもできます。ドメイン修飾したサービス要求については,「2.1.18 ドメイン修飾をしたサービス要求」を参照してください。
OpenTP1では,サーバUAPはサービス提供プログラム(SPP)です。SPPのサービスを要求できるクライアントUAPは,SUP,SPP,MHP,CUPです。
サーバUAPは,OpenTP1の開始と一緒に開始(自動起動)しておくか,OpenTP1の開始後にdcsvstartコマンドで開始(手動起動)しておきます。開始しておくことで,サーバUAPはサービスを提供できる状態になります。開始していないサーバUAPにサービスを要求すると,dc_rpc_call関数はエラーリターンします。
クライアントUAPは,開始したサーバUAPのプロセスが稼働しているかどうかに関係なく,dc_rpc_call関数でサービスを要求できます。サービスを要求したときに,指定したサーバUAPのプロセスが稼働していなくても,OpenTP1が自動的にプロセスを起動します。
MHPからRPCでサービスは要求できますが,MHPのサービス関数へはサービスを要求できません。また,オフラインの業務をするUAPでは,RPCを使えません。
RPCを使った通信のクライアント/サーバの関係を次の図に示します。
|