PHP アプリケーション用の Web サービスを実装しており、標準の Web サービスと RESTful Web サービスの両方が提供するものを理解しようとしています。私の意図は、ラッパー コードを記述して Web サービスの詳細を抽象化し、開発者が単に「リモート オブジェクトをインスタンス化」して使用できるようにすることです。これが私の考えです、おそらくあなたの何人かはあなたの経験を追加してこれを拡張することができます:
RESTful Web サービス
基本的には「オンデマンドの XML フィード」です。たとえば、クライアント アプリケーションのラッパー コードを記述して、次の方法でサーバー アプリケーションにクエリを実行できます。
$users = Users::getUsers("state = 'CO'");
- これにより、リモート URL から XML フィードが取得されます。
- $users は、完全な User オブジェクトのコレクションにすることができます。
- XMLのまま、または
- 配列などに変換されます。
- クエリ スクリプト ("state = 'CO'") は、サーバー側で SQL に変換されます。
通常、RESTful Web サービスはクライアントから見ると読み取り専用ですが、POST または GET を使用してサーバーに変更を加えるコードを作成することもできます。たとえば、セキュリティのために暗号化されたトークンを渡すなどです。
$users = ユーザー::addUser($encryptedTrustToken, 'jim',$encryptedPassword, 'James', 'Taylor');
これにより、サーバー アプリケーションに新しいユーザーが作成されます。
標準 Web サービス
結局、標準 Web サービスは基本的に同じことを行います。利点の 1 つは、クライアントが WSDL を介して詳細を検出できることです。しかし、それ以外に、開発者がオブジェクトをリモートでインスタンス化、編集、および保存できるようにするラッパー コードを書きたい場合は、ラッパー コードを実装する必要があります。SOAPは私のためにそれをしません。これを行うことができます:
$soap = new nusoap_client('http://localhost/test/webservice_user.php?wsdl', true);
$user = $soap->getProxy();
$lastName = $user->lastName();
しかし、編集して保存したい場合:
$user->setLastName('Jones');
$user->save();
次に、たとえばサーバー側ですべての状態を処理する必要があります.SOAPは、クライアントごとにサーバー側でそのオブジェクトを保持していないようです。
おそらく、私が使用している PHP SOAP 実装 (nusoap) には制限があります。おそらく、Java と .NET の実装はさらに多くのことを行います。
これらの雲の一部を解消するために、フィードバックをお楽しみください。