XML-RPC плохо используется в качестве протокола для реализации публичного API? - PullRequest
3 голосов
/ 01 января 2011

Мне нужно реализовать веб-API для проекта, над которым я работаю в этот период. Я читал, что есть много стандартных протоколов для этого: XML-RPC, SOAP, REST. Судя по всему, XML-RPC проще всего реализовать и использовать из того, что я видел, но я ничего не нашел об использовании его для реализации API. Вместо этого я нашел много учебника по созданию REST API в PHP, например. Есть ли какие-либо противопоказания для использования XML-RPC для реализации общедоступного веб-API?

Кроме того, в более общем смысле, я мог бы (вроде) определить собственный протокол для своего API, чтобы упростить задачу (т.е. принимать только запрос GET, содержащий параметры, которые мне нужны): это будет так плохо? Обязательно ли использование стандартного протокола?

Ответы [ 6 ]

1 голос
/ 01 января 2011

Если ваше приложение очень простое, то нет ничего плохого в том, чтобы просто использовать GET-запросы и передавать параметры.Вам не нужно использовать какой-то стандарт, такой как SOAP.

Технически вы бы использовали REST, если вы отправляете объекты.Например, если у вас есть доменные объекты, которые вы хотите транспортировать, их можно получить с помощью GET, обновив их через PUT через стандартный URL-адрес.Хотя многие люди называют первый вариант выше «отдыхом», это не совсем верно.

SOAP / XML-RPC - это протоколы, в которых есть библиотеки для каждой платформы под солнцем, но они медленно умирают из-за своего раздувания в XML и(относительно) сложная схема.Я не большой поклонник этих протоколов, и они никогда не использовались так широко.Люди могут спорить иначе, но попробуйте найти крупную веб-компанию, которая использует любой из них для своего публичного протокола, и я куплю этому человеку сэндвич.

Кажется, что JSON теперь захватывает мир.Он компактен, быстро разбирается и идеально подходит для веб-приложений, так как вы можете передать его прямо в javascript.Вы можете пойти очень далеко, просто используя HTTP GET, который возвращает JSON.

0 голосов
/ 29 декабря 2014

Хорошо. Мне пришлось создать приложение magento для Android для компании, и я был перепутан между тремя SOAP, REST и XML-RPC, в конце концов перешел на XML RPC - действительно круто и просто: D

0 голосов
/ 01 января 2011

Недостатком будет то, что вы будете определять свою собственную семантику для работы с ресурсами (которую должны изучить ваши разработчики клиента), когда вы могли бы использовать уже существующие операции.

HTTP определяет операции / действия / глаголы, которые можно использовать. Если вы используете это, вы можете предоставить единый интерфейс, по которому пользователи api могут звонить без необходимости изучать ваши новые планы.

Это позволит вам выполнить одно из полезных ограничений в REST .

0 голосов
/ 01 января 2011

Наше приложение предоставляет все три протокола

  • Простой HTTP
  • XML RPC
  • SOAP

По нашему опыту новичка илиресурс-ориентированный пользователь использует простой HTTP.Некоторые (не многие) решили использовать XML RPC.В основном, когда они новички в этой теме и не имеют большого количества сервисных API.Высокие пользователи и любители технологий выбирают SOAP.

Мне кажется, дни XML-RPC прошли.Либо перейдите на простой HTTP POST (который я предпочитаю, если вы в состоянии определить чистую подпись службы, хорошими кандидатами являются те, которые имеют только примитивные типы, без реального смысла объектов), или выберите SOAP, если у вас нет ограничений по ресурсам.

Я бы предпочел даже "более новые", такие как JSON RPC, а не XML RPC.JSON может быть хорошим выбором, если вам нужно больше простых подписей параметров.

0 голосов
/ 01 января 2011

Чтобы ответить на ваш вопрос, я думаю, что SOAP или RESTful API было бы лучше всего реализовать, поскольку потребители вашего API, скорее всего, имели бы с ними больше опыта.

Кроме того, ваш последний бит, где вы говорите о принятииполучать запросы с конкретными параметрами, что является очень большой частью разработки RESTful API.Если вы думаете, что это будет легко реализовать, я настоятельно рекомендую вам провести исследование по созданию RESTful API на выбранном вами языке, потому что я думаю, что вы найдете его очень близким к альтернативному решению, которое вы предложили.

0 голосов
/ 01 января 2011

Почему бы просто не использовать SOAP, который намного проще реализовать на многих платформах.

Возможно, если вы используете платформу без поддержки SOAP, тогда может быть проще использовать XML-RPC.Но в то же время большинство платформ не поддерживают XML-RPC.

Протокол SOAP основан на XML-RPC, что значительно снизило эффективность XML-RPC.

...