Подтвердить что ты не робот

REST против RPC в PHP

Я создаю свой собственный сайт Ajax, и я размышляю между REST и RPC.

Если мой сервер поддерживает сервлеты, я просто установил persevere и устранил проблему, но мой сервер не поддерживает сервлеты.

RPC проще кодировать (IMO) и может быть легко написан на PHP. Все, что мне нужно, это исполняемый файл запроса к базе данных. Я использую Dojo Toolkit и JSON.

Почему я должен выбрать REST над RPC или RPC над REST?

4b9b3361

Ответ 1

Ухм... чтобы это было просто, обе очень абстрактные модели... так абстрактны, они, естественно, происходят повсюду...

REST - это идея иметь ресурсы, адресованные глобальным идентификатором (URI в случае HTTP), к которым обращаются в CRUD (используя POST, GET, PUT и DELETE в случае HTTP... ну, по крайней мере, эта идея)...

RPC - это идея, когда вы вызываете процедуру на другой машине, передаете некоторые параметры и принимаете возвращаемое значение...

В Википедии есть хорошее короткое сравнение

Persevere создает сервис, который позволяет (и очень элегантно, по общему признанию)... RESTful (хотя он не только использует HTTP-функции для достижения этого) и предоставляет интерфейс RPC...

В конце концов, вы должны посмотреть, что нужно делать вашему приложению... как и большинство людей, вы, вероятно, закончите с API RPC (основываясь на XML или JSON или что-то еще), который включает в себя транспортный уровень для частично подсистемы RESTful... это потому, что наличие RESTfulnes означает гибкость... если клиент может более или менее свободно перемещаться по данным на сервере (через набор простых CRUD-методов), он не зависит от ограниченного (специфичного для конкретной задачи ) набор методов, открытых через API, и вы можете сдвинуть логику навстречу...

Ответ 2

Лучший способ понять это - прочитать статью Роя Т. Филдинга о нем или соответствующие статьи в своем блоге где он обсуждает различия между чистой REST и просто архитектурой RPC.

Еще одно замечание: статья Википедии о REST находится в ужасном состоянии, и сам Филдинг, "изобретатель" REST, предполагает, что статья неточна.

Самое большое, что люди пропускают с REST - это открытость - ресурсы должны включать URI для других связанных ресурсов внутри их гипертекста, вместо того чтобы полагаться на соглашения об именах URI, которые являются внеполосными и нестандартизированными.

Большая проблема с популярными реализациями RPC, такими как SOAP или XML-RPC, заключается в том, что они используют HTTP под собственной собственной архитектурой, вместо того, чтобы использовать все различные свойства HTTP, такие как PUT, GET, DELETE и т.д. t подходит и к традиционному веб-стеклу - кэш-сервер посередине не работает, например, не зная о значении содержимого вызова RPC.

Это неполное введение в REST и RPC, но я думаю, что я выделил некоторые важные моменты, которые часто упускаются. Будьте осторожны, так как в REST есть много неправильной информации.

Тем не менее, REST не для всего. Это архитектура, поэтому она довольно гибкая, как вы можете ее реализовать. Но если нет смысла обращаться к вещам в основном как к ресурсам, тогда REST может не соответствовать, или он может соответствовать только частям вашего приложения, что хорошо.

Ответ 3

Существует три разных стиля сервисов:

  • RPC API - клиент отправляет процедуру и параметры для обслуживания, а служба отвечает за выполнение команды и возвращает результат.
  • API сообщений (Document API) - клиент отправляет DOM (элементы), которые обычно являются более сложными структурами, чем вызовы API RPC, поскольку они, как правило, не подразумевают операции напрямую.
  • API ресурсов - используется для доступа к ресурсам (кортежи баз данных, файлы, изображения и т.д.). В общем случае он также должен обеспечить хорошее согласование типа носителя.

SOAP и REST являются компиляцией стандартов W3C, и основное различие заключается в том, что SOAP использует HTTP, SMTP и т.д. в качестве транспортных протоколов и REST использует его как протокол приложения, AKA, который он должен поддерживать (GET, PUT, PUSH, DELETE и POST). SOAP также подразумевает, что использование XML и REST может использовать любой тип данных (JSON, XML, HTTP и т.д.). Кроме того, одним из основных преимуществ SOAP является дескриптор службы (файл WSDL), который дает возможность автогенерации Service Connector (прокси) для клиента.

Нет серебряная марка; тип и архитектура веб-службы зависят от фактических требований клиента и технологии.

Для общей идеи по этому вопросу см. одну из подписных книг Мартина Фаулера - Шаблоны проектирования услуг