Estoy implementando servicios web para una aplicación PHP y estoy tratando de entender lo que los servicios web estándar y los servicios web RESTful tienen para ofrecer. Mi intención es escribir un código de contenedor para abstraer los detalles del servicio web para que los desarrolladores puedan simplemente "crear instancias de objetos remotos" y usarlos. Éstos son mis pensamientos, tal vez algunos de ustedes podrían añadir su experiencia y ampliar esta:¿En qué se diferencian los servicios web RESTful y SOAP en la práctica?
REST Web Servcies
son básicamente "XML alimenta de la demanda", por lo que, por ejemplo, se podría escribir código de contenedor para una aplicación cliente para que pudiera consultar la aplicación de servidor de esta manera:
$users = Users::getUsers("state = 'CO'");
- esto a su vez obtener un feed XML formar una URL remota
- $ usuarios podría convertirse en una colección de objetos de usuario completa, o
- dejaron como XML, o
- convirtieron en una matriz, etc.
- la secuencia de comandos de consulta ("estado = 'CO'") se traduciría en SQL en el lado del servidor
Los servicios web RESTful son, en general, de solo lectura desde la vista del cliente, aunque podría escribir código que podría usar POST o GET para realizar cambios en el servidor, p. pasando un token cifrado por seguridad, por ejemplo:
$ users = Users :: addUser ($ encryptedTrustToken, 'jim', $ encryptedPassword, 'James', 'Taylor');
y esto crearía un nuevo usuario en la aplicación del servidor.
servicios web estándar
estándar Web Servcies en el extremo básicamente hacen lo mismo. La única ventaja que tienen es que el cliente puede descubrir sus detalles a través de WSDL. Pero aparte de eso, si quiero escribir un código de envoltura que permita a un desarrollador crear instancias, editar y guardar objetos de forma remota, igual debo implementar el código de envoltura. SOAP no hacer nada de eso para mí, se puede hacer esto:
$soap = new nusoap_client('http://localhost/test/webservice_user.php?wsdl', true);
$user = $soap->getProxy();
$lastName = $user->lastName();
pero si quiero editar y guardar:
$user->setLastName('Jones');
$user->save();
entonces necesito a, por ejemplo manejar todo el estado en el lado del servidor, SOAP no parece mantener ese objeto en el lado del servidor para cada cliente.
Quizás haya limitaciones en la implementación de PHP SOAP que estoy usando (nusoap). Quizás las implementaciones de Java y .NET hacen mucho más.
Disfrutará escuchando sus comentarios para aclarar algunas de estas nubes.
No entiendo la pregunta. ¿Qué no puedes hacer? ¿Qué problema estás teniendo? –