Чем RESTful и SOAP Web Services отличаются на практике?

Я внедряю веб-сервисы для приложения PHP и пытаюсь понять, что могут предложить как стандартные веб-сервисы, так и веб-сервисы RESTful. Я намереваюсь написать код-обертку, чтобы абстрагировать детали веб-службы, чтобы разработчики могли просто «создавать экземпляры удаленных объектов» и использовать их. Вот мои мысли, возможно, некоторые из вас могли бы добавить свой опыт и расширить это:

Веб-сервисы RESTful

в основном просто «XML-каналы по требованию», например, Вы можете написать код-обертку для клиентского приложения, чтобы оно могло запрашивать серверное приложение следующим образом:

$users = Users::getUsers("state = 'CO'");
это, в свою очередь, получит XML-фид с удаленного URL$ users может быть превращен в коллекцию полных объектов User, илиоставить как XML, илипревращается в массив и т. д.скрипт запроса ("state = 'CO'") будет переведен в SQL на стороне сервера

Веб-службы RESTful, как правило, доступны только для чтения с точки зрения клиента, хотя вы могли бы написать код, который мог бы использовать POST или GET для внесения изменений на сервере, например, передать зашифрованный токен для безопасности, например:

$ 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 делают намного больше.

Будет приятно услышать ваши отзывы, чтобы очистить некоторые из этих облаков.

Ответы на вопрос(5)

Ваш ответ на вопрос