Я внедряю веб-службы для приложения PHP и пытаюсь понять, что могут предложить как стандартные веб-службы, так и веб-службы RESTful.
Я намереваюсь написать код-обертку, чтобы абстрагировать детали веб-службы, чтобы разработчики могли просто «создавать экземпляры удаленных объектов» и использовать их.
Вот мои мысли, возможно, некоторые из вас могли бы добавить свой опыт и расширить это:
Веб-службы RESTful
- это просто "XML-каналы по требованию", например, Вы можете написать код-обертку для клиентского приложения, чтобы оно могло запрашивать серверное приложение следующим образом:
$users = Users::getUsers("state = 'CO'");
- это, в свою очередь, приведет к получению XML-фида с удаленного URL
- $ пользователей может быть превращено в набор полных пользовательских объектов, или
- оставить как XML или
- превращается в массив и т. Д.
- сценарий запроса ("state = 'CO'") будет переведен в SQL на стороне сервера
Веб-службы RESTful обычно доступны только для чтения с точки зрения клиента, хотя вы могли бы написать код, который мог бы использовать POST или GET для внесения изменений на сервере, например, Передача зашифрованного токена для безопасности, например ::1010
$ users = Users :: addUser ($ encryptedTrustToken, 'jim', $ encryptedPassword, 'James', 'Taylor');
и это создаст нового пользователя на сервере приложения.
Стандартные веб-сервисы
Стандартные веб-сервисы в конце концов делают то же самое. Единственное преимущество, которое у них есть, заключается в том, что клиент может узнать свои данные через 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 делают намного больше.
Будет приятно услышать ваши отзывы, чтобы очистить некоторые из этих облаков.