Как лучше всего использовать сервисы REST? - PullRequest
15 голосов
/ 10 июня 2009

Я знаю, что такие сайты, как Facebook, в настоящее время используют службы REST, но мне интересно узнать о других приложениях, которые используют REST, и есть ли конкретные ситуации, когда использование REST более оправдано, чем другие методологии.

Ответы [ 6 ]

36 голосов
/ 10 июня 2009

REST не относится к службам данных CRUD. Да, вы можете использовать REST для предоставления сервисов, подобных CRUD, но это все равно, что сказать, что регулярные выражения предназначены для анализа адресов электронной почты.

Здесь - лучшая презентация, которую я когда-либо видел на дебатах REST против SOAP / RPC.

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

Atom Pub - хорошая реализация REST. Netflix API - один из лучших коммерческих REST API. API Twitter не справляется с большинством ограничений RESTful.

Если вы хотите получить точную информацию о REST, перейдите в следующие места:

Не слушайте крупных вендоров по теме, которую они более заинтересованы в том, чтобы сделать их существующие продукты модными.


Последующий:

Есть несколько причин, по которым я считаю, что интерфейсы REST более подходят для взаимодействия клиент-сервер, чем от взаимодействия сервер-сервер. Это только мое мнение, и я не пытаюсь утверждать, что такой точки зрения придерживается кто-либо, кроме меня!

Соотношение многих к 1

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

Слабая связь

REST - это слабая связь. Идея состоит в том, что вы можете продолжать развивать сервер без обновления клиентов. Если вы планируете внедрить службу REST на сервере A, который будет вызываться сервером B, который находится в той же комнате, преимущества слабой связи уменьшаются. Обновление программного обеспечения на обеих машинах не убьет вас.

гипермедиа

Гипермедиа ограничена возможностью предоставления пользователям выбора на основе текущего состояния приложения. Интерфейсы REST поддерживают специальное исследование гиперссылочной системы. Связь сервер-сервер имеет тенденцию фокусироваться на достижении конкретной задачи. например Обработайте этот пакет данных. Запустите эти события в соответствии с расписанием. По сути, там нет ни одного пользователя, который бы принимал решения о том, какой путь выбрать. Путь был заранее определен на основе параметров и условий.

Performance

В сценарии связи сервер-сервер может быть критически важно достичь максимальной пропускной способности. Бинарный протокол может быть более подходящим, чем Http. Задержка может быть критической в ​​типе обмена данными между серверами. В клиент-серверной среде, где одним концом управляет человек, требования к производительности совершенно иные, и я считаю, что ограничения REST больше подходят для такого типа взаимодействия.

* * Взаимодействие тысячи сорок-девять

REST рекомендует использовать стандартные медиа-типы в качестве полезных нагрузок HTTP. Это поощряет случайное повторное использование предоставляемых услуг. Я думаю, что существует гораздо больше возможностей для повторного использования сервисов, предназначенных для использования клиентскими приложениями, чем тех, которые предназначены для других серверов.

При проектировании интерфейсов REST мне нравится думать, что потребитель сервиса - это часть программного обеспечения, которая находится под непосредственным контролем конечного пользователя. Неслучайно веб-браузер называется агентом пользователя.

3 голосов
/ 10 июня 2009

SOAP является наиболее популярной альтернативой REST, и я нашел несколько хороших ссылок, описывающих их различия и когда использовать:

Суть его в том, что REST намного проще, чем его альтернативы (особенно SOAP), и его следует использовать, когда все, что вам нужно, это базовая функциональность (создание / чтение / обновление / удаление), а ваша служба не имеет состояния. 1017 *

Если вам нужен пример приложения, использующего REST, CouchDB делает. (Я не могу думать ни о каких других из головы). Кроме того, многие веб-сайты используют его, такие как Flickr, del.icio.us, Bloglines и Technorati.

1 голос
/ 10 июня 2009

Есть много примеров. GData и протокол Atom Pub являются, вероятно, лучшими. Твиттер, похоже, также имеет хороший REST API. Сервис Amazon S3 также довольно "RESTful". К сожалению, многие сервисы, претендующие на статус RESTful, нарушают основные принципы REST, изложенные Роем Филдингом в его диссертации , описывающей архитектурный стиль REST.

REST - это архитектурный стиль, а не набор в определенном стандарте или реализации. Это затрудняет определение того, что является и не является службой REST, поэтому вы часто будете слышать «RESTful».

REST может быть отличной (и простой) альтернативой SOAP, XMLRPC, а в некоторых случаях такими вещами, как DCOM и CORBA. Это может быть очень простой способ облегчить базовые распределенные вычисления и простой способ представить API ... особенно из-за того, что он так хорошо интегрируется в вездесущий HTTP.

0 голосов
/ 03 марта 2012

Вы должны учитывать то, что хотят ваши клиенты! Создание большого SOAP-сервиса, который никто не хочет использовать, будет пустой тратой вашего времени. Точно так же, если ваши потенциальные пользователи погружены в SOAP, возможно, именно это вы и должны им дать.

Если вы не знаете, чего хотят ваши пользователи, учитывайте настроения отрасли. Большинство компаний, которые в настоящее время предоставляют публичный API, представляют REST API. Мне действительно нравится, как Foursquare задокументировал их: https://developer.foursquare.com/overview/

0 голосов
/ 10 июня 2009

REST эффективен, когда вашей конечной целью данных являются операции CRUD, обычно в веб-интерфейсе пользователя, обычно с использованием AJAX, Flash, Silverlight, когда безопасность, шифрование, транзакции не имеют значения, однако если ваши требования включает в себя любые корпоративные функции, упомянутые ранее (транзакции, шифрование, совместимость и т. д.). SOAP - это решение.

0 голосов
/ 10 июня 2009

Существует множество интерфейсов REST: flickr и API данных Google приходят на ум в качестве двух больших примеров.

REST отлично подходит для простого взаимодействия с данными и соединений без сохранения состояния (аналогично самому HTTP). SOAP является распространенной альтернативой и часто используется для более сложных соединений. REST очень популярен в наши дни, и с него можно начать, если вы только узнаете, зачем вам нужен интерфейс данных. Разработка интерфейсов REST проста в освоении и имеет низкие барьеры для входа.

...