7.1 会話型通信の概要

会話型通信はOracle Tuxedoシステムのメッセージ交換のパラダイムで、人の会話に似た通信がATMIクライアントおよびサーバー間で実装されています。この通信方法では、クライアント(イニシエータ)とサーバー(サブオーディネート)間で仮想接続が行われて、双方で会話の状態に関する情報が保持されます。接続は、それを終了するイベントが発生するまでアクティブなままです。

会話型通信では、クライアントとサーバー間に半二重接続が確立されます。半二重接続では、メッセージが1方向だけに送信されます。接続に関する制御は、イニシエータからサブオーディネートへ、またはその逆に移ります。制御を持つプロセスがメッセージを送信でき、持たないプロセスは受信しかできません。

次の図の銀行業務のオンライン・アプリケーションを例に、Oracle Tuxedo ATMIアプリケーションで行われる会話型通信について説明します。この例では、銀行の顧客が過去2か月間の当座預金の明細書をリクエストしています。

図7-1 銀行業務オンライン・アプリケーションでの会話型通信


銀行業務オンライン・アプリケーションでの会話型通信の図

  1. 顧客が過去2か月間の当座預金口座の明細書をリクエストします。
  2. 口座レコード管理システムは、当座預金口座の最初の月の明細書を送信し、次に、次の月の明細書を送信するかどうかをMoreプロンプトで確認して応答します。
  3. 顧客はMoreプロンプトを選択して、次の月の明細書をリクエストします。

    ノート: 口座レコード管理システムでは、状態情報を保持して、顧客がMoreプロンプトを選択した場合にどの明細書を送るのか認識できるようにする必要があります。

  4. 口座レコード管理システムは、次の月の明細書を送信します。

リクエスト/レスポンス型通信の場合と同じように、Oracle Tuxedoシステムでは型付きバッファを使用してデータが渡されます。アプリケーションがバッファ・タイプを認識できることが必要です。バッファ・タイプの詳細は、「型付きバッファの概要」 を参照してください。

会話型のクライアントおよびサーバーには、次の特徴があります。

  • 会話型のクライアントとサーバー間の論理接続は、接続が終了するまで継続します。
  • 会話型のクライアントとサーバー間の接続で転送できるメッセージの数には制限はありません。
  • クライアントとサーバーとの会話では、データの送受信にtpsend()およびtprecv()ルーチンが使用されます。

会話型通信は、次の点でリクエスト/レスポンス型通信と異なります。

  • 会話型クライアントは、サービスをリクエストするときにtpcall()またはtpacall()ではなく、tpconnect()を使用します。
  • 会話型クライアントは、会話型サーバーにサービス・リクエストを送信します。
  • 会話型サービスを定義するために、構成ファイルに会話型サーバーの一部が予約されています。
  • 会話型サーバーは、tpforward()を使用して呼出しを行うことはできません。