PRMPの動作について †PRMPのモデルはJavaRMIを参考にしていますが、JavaRMIのようなリモートオブジェクトコンパイラ(rmic)や
レジストリサーバ(rmiregistry)が存在するわけではありません。 PRMP動作イメージ (サービスドメイン) †動作としては、まず、remote message serverありき。で、client applicationの要求にしたがって、
client stubが remote message serverにメッセージを送って、メソッドの代理実行を依頼する。 PRMP動作イメージ (マシンドメイン) †複数のマシンでremote message serverを使う場合はこんなイメージになります。 事前に †利用を開始する前に、PRMPのサーバ(remote message server)を起動します。
インスタンス生成 †1. client applicationが対象のクラス(client stubの派生クラス)をインスタンス化すと、client stubは設定値を元に特定のremoto message serverに接続する。 メソッド呼び出し †1. client applicationがclient instanceのメソッドを呼ぶと、PRMPのclient stubが適切なXML-RPCメッセージをremote message serverに送信する(request)。 インスタンス破棄 †1. client applicationがclient instanceの参照を失うと、PHPは client instanceを破棄しようとしデストラクタ__destruct()を呼び出す。 メッセージ †クライアント/サーバ間でXML-RPCに準拠したメッセージを投げ合っています。 クライアントはメッセージ内の <methodName>タグを利用してremote_message_server.phpに要求を送信します。 定義済みmethodName (操作メッセージ) †CREATE パラメタでで指定されたクラスのインスタンス生成。 DESTROY インスタンスの破棄。 METHOD.method_name メソッド呼び出し インスタンスのmethod_nameを呼ぶ。(メッセージを送る) 投げ合ってるメッセージの例 †■CREATE <?xml version="1.0" encoding="utf-8"?> <methodCall> <methodName>CREATE</methodName> <params> <param> <value> <string>sample_class</string> </value> </param> </params> </methodCall> response: (server -> client) <?xml version="1.0" encoding="utf-8"?> <methodResponse> <params> <param> <value> <boolean>1</boolean> </value> </param> </params> </methodResponse> ■DESTROY <?xml version="1.0" encoding="utf-8"?> <methodCall> <methodName>DESTROY</methodName> <params> <param> <value> <int>0</int> </value> </param> </params> </methodCall> response: (server -> client) <?xml version="1.0" encoding="utf-8"?> <methodResponse> <params> <param> <value> <boolean>1</boolean> </value> </param> </params> </methodResponse> ■METHOD <?xml version="1.0" encoding="utf-8"?> <methodCall> <methodName>METHOD.add</methodName> <params> <param> <value> <int>100</int> </value> </param> <param> <value> <int>200</int> </value> </param> </params> </methodCall> response: (server -> client) <?xml version="1.0" encoding="utf-8"?> <methodResponse> <params> <param> <value> <int>300</int> </value> </param> </params> </methodResponse> セッションの維持 †PRMPはクライアント/サーバ間でセッションがはられると、対応するインスタンスが破棄されるまで(通常は)その接続を持続します。 できること、できないこと。わからないこと。 †
仕様上の問題点 †
|