2.2.1 リモートプロシジャコールを使った通信
OpenTP1のUAPでは,ほかのUAPとリモートプロシジャコール(RPC)を使用して通信できます。リモートプロシジャコールとは,UAPプロセスからほかのUAPプロセスへサービスを要求し,サービスを要求されたUAPプロセスは要求元のUAPへ処理結果を返す通信です。
クライアント/サーバ形態の通信の処理概要を次の図に示します。
- 注※1
-
TP1/Clientは,OpenTP1のサーバへサービスを要求する,クライアント専用の製品です。
TP1/Clientについては,「2.2.2 OpenTP1クライアント機能の概要」および「3.5 OpenTP1クライアント機能(TP1/Client)」を参照してください。
- 注※2
-
OpenTP1独自のインタフェースを使うと,ファイアウォールの内側にあるサーバUAPにもリモートプロシジャコールを使って通信できます。ただし,ファイアウォールを通過した場合,通過先のサーバUAPをトランザクション処理に含めることはできません。ファイアウォールを通過する場合については,「3.7.1 リモートAPI機能の使用例」を参照してください。
- 〈この項の構成〉
(1) クライアントUAPとサーバUAP
サービスを要求するUAPとサービスを提供するUAPは,クライアントとサーバの関係になります。サービスを要求する側のUAPをクライアントUAP,サービスを提供する側のUAPをサーバUAPといいます。
UAPについては,「2.6 OpenTP1のアプリケーションプログラム」を参照してください。
(2) トランザクショナルRPC
リモートプロシジャコールでは,サービス要求をしてから結果が返ってくるまでの処理をトランザクションとするかどうかを選べます。トランザクションとするRPCを,トランザクショナルRPCといいます。トランザクショナルRPCの場合は,複数のノードにわたって処理しているRPCでも,一つのトランザクションとして処理できます。
(3) OpenTP1で使えるリモートプロシジャコール
OpenTP1でクライアント/サーバ形態の通信をする場合は,次に示すインタフェースを使えます。
(a) OpenTP1独自のインタフェース
OpenTP1独自のライブラリ関数を使ってサービスを要求する通信方法です。
(b) X/Openに準拠したインタフェース
X/Openに準拠した通信方法を次に示します。
-
XATMIインタフェース
X/Openで規定するライブラリ関数を使ってサービスを要求する通信方法です。
-
TxRPCインタフェース
X/Openで規定した手順で作成したUAPの関数を直接呼び出して通信する方法です。
これらのほかにも,OpenTP1以外のオープンシステムと通信することもできます。クライアント/サーバ形態の通信については,「3.2 クライアント/サーバ形態の通信」を参照してください。
(4) クライアント/サーバ形態の通信プロトコル
OpenTP1のクライアント/サーバ形態の通信プロトコルには,TCP/IPとOSI TPを使えます。どちらを使う場合でも,UAPの処理で通信プロトコルを意識する必要はありません。
通信プロトコルにOSI TPを使う場合には,通信プロトコルを管理する製品としてTP1/NET/OSI-TP-Extendedが必要です。OSI TPを使ったクライアント/サーバ形態の通信については,「3.6 OSI TPを使ったクライアント/サーバ形態の通信」を参照してください。
(5) TCP_NODELAY
TCP_NODELAYは,送信済みデータの応答待ちの状態でも遅延させることなくデータを送信できるようにする機能です※。この機能では,OpenTP1がノード間で使用する通信ソケット(INETドメイン)に,TCP_NODELAYオプションを使用します。
データ送信の際にTCP_NODELAYオプションを使用するかどうかは,スケジュールサービス定義,ユーザサービス定義,またはユーザサービスデフォルト定義のipc_tcpnodelayオペランドで指定します。なお,TCP_NODELAYオプションを使用すると,INETドメイン通信時の送信効率が低下し,ネットワークの負荷が大きくなる場合があります。TCP_NODELAYオプションを使用する場合は,ipc_sendbuf_sizeオペランド,ipc_recvbuf_sizeオペランド,ネットワークの帯域などを考慮し,この機能の必要性を十分に検討してください。
- 注※
-
TCP/IPのNagleアルゴリズムを無効にすることで,この機能を実現させています。