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