SOAP или REST для веб-сервисов? [закрыто]

Принятый ответ не работал для PostgreSQL (синтаксическая ошибка в или рядом с «a»).

Как вы это делаете в PostgreSQL, используется функция generate_series , то есть:

SELECT day::date
FROM generate_series('2010-01-20', '2010-01-24', INTERVAL '1 day') day;

    day
------------
 2010-01-20
 2010-01-21
 2010-01-22
 2010-01-23
 2010-01-24
(5 rows)

379
задан halfer 7 June 2019 в 07:30
поделиться

15 ответов

Я рекомендовал бы пойти с REST сначала - если Вы используете взгляд Java на JAX-RS и Джерси реализация. REST намного более прост и легок к interop на многих языках.

, Поскольку другие сказали в этом потоке, проблемой с SOAP является своя сложность, когда другой WS -* спецификации входят и существуют бесчисленные проблемы interop, если Вы отклоняетесь в неправильные части WSDL, XSDs, SOAP, Обращение WS и т.д.

лучший способ судить остальных, v дебаты SOAP являются взглядом на Интернет - в значительной степени, все крупные игроки в интернет-пространстве, Google, амазонке, eBay, Твиттер и др. - склонны использовать и предпочитать УСПОКОИТЕЛЬНЫЕ API по SOAP.

другой хороший подход к движению с REST состоит в том, что можно снова использовать много кода и infratructure между веб-приложением и фронтэндом REST. например, рендеринг HTML по сравнению с XML по сравнению с JSON Ваших ресурсов обычно довольно легок с платформами как JAX-RS и неявные представления - плюс его легкое работать с УСПОКОИТЕЛЬНЫМИ ресурсами с помощью веб-браузера

17
ответ дан James Strachan 7 June 2019 в 07:30
поделиться

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

6
ответ дан Mark Beckwith 7 June 2019 в 07:30
поделиться

Я создал один из первых серверов SOAP, включая генерацию кода и поколение WSDL, от исходной спецификации, поскольку это разрабатывалось, когда я работал в Hewlett-Packard. Я НЕ рекомендую использовать SOAP для чего-либо.

акроним "SOAP" является ложью. Это не Просто, это не Объектно-ориентировано, это не определяет правил Доступа. Это - возможно, Протокол. Это - худшая спецификация Don Box когда-либо, и это - настоящий подвиг, как он - человек, который совершил "COM".

нет ничего полезного в SOAP, который не может быть сделан с REST для транспорта, и JSON, XML или даже простым текстом для представления данных. Для транспортной безопасности можно использовать https. Для аутентификации, основного автора Для сессий, существуют cookie. ОСТАЛЬНЫЕ присваивают версию, будет более простым, более ясным, работать быстрее и использовать меньше пропускной способности.

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

562
ответ дан mdhughes 7 June 2019 в 07:30
поделиться

Если бы Вы ищете совместимость между различными системами и языками, я определенно пошел бы для REST. У меня было много проблем, пытающихся получить SOAP, работающий между.NET и Java, например.

2
ответ дан neu242 7 June 2019 в 07:30
поделиться
  • 1
    Можно сохранить конструктора путем добавления constructor: MyClass или в более общем плане constructor: Myclass.prototype.constructor в новом объекте свойства. – HBP 19 August 2013 в 06:25

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

мне любопытно относительно того, какие другие думают.

6
ответ дан cranley 7 June 2019 в 07:30
поделиться
  • 1
    Точка, всегда будет кто-то не желающий или неспособный придерживаться любой политики безопасности, которую Вы имеете в распоряжении. Вы или угождаете им и делаете Ваш сайт более популярным, но менее безопасный, или Вы сохраняете свои политики и говорите отставшим быть изогнутыми. (Я wasn' t говорящий об определенном браузере для точно, что причина: люди слишком срываются в специфических особенностях. Теперь выход, заботящийся о IE по сравнению с Firefox по сравнению с Lynx по сравнению с Wget, по сравнению со что.) Проблемой является SERVER' s управление сессиями, НЕ CLIENT' S. Клиенты shouldn' t даже ОБРАБОТАТЬ сессии, кроме передачи сервера cookie. – cHao 11 July 2010 в 21:34

Не пропускайте XML-RPC. Если Вы сразу после легкого решения тогда существует много, чтобы быть сказанным для протокола, который может быть определен на нескольких страницах текста и реализован в минимальном объеме кода. XML-RPC был вокруг в течение многих лет, но пошел вышедший из моды некоторое время - но минималистское обращение, кажется, дает ему что-то вроде возрождения в последнее время.

10
ответ дан Cruachan 7 June 2019 в 07:30
поделиться
  • 1
    Я пытался переопределить WinProc, но законченный той же проблемой: щелчки мышью были только выгодой, когда я нажал непосредственно по форме. Если я нажал на дочерний элемент управления, Winproc не назвали. – Gustavo Cardoso 30 April 2009 в 12:36

Я уверен, что Don Box создал SOAP, поскольку шутка - 'смотрит, Вы можете методы RPC вызова по сети' и сегодня стонете, когда он понимает то, что чрезмерно увеличенный в размерах кошмар веб-стандартов это стало:-)

, REST хорош, прост, реализован везде (так больше 'стандарт', чем стандарты) быстрый и легкий. Используйте REST.

16
ответ дан gbjbaanb 7 June 2019 в 07:30
поделиться
  • 1
    Рекурсия childs componets является хорошим tatic. Но я don' t хотят добавить слушателя каждого управления. К событиям от нажатия мыши Приложение. Работа AddMessageFilter, но я думаю, что Ваша идея хороша к другим типам событий. Спасибо за справку! – Gustavo Cardoso 30 April 2009 в 12:38

SOAP полезен с точки зрения инструментов, потому что WSDL так легко используется инструментами. Так, можно было генерировать клиенты веб-сервиса для Вас на Вашем любимом языке.

REST играет хорошо с веб-страницами AJAX'y. Если Вы сохраняете свои запросы простыми, можно сделать служебные вызовы непосредственно из JavaScript, и это входит очень удобное. Попытайтесь избегать наличия любых пространств имен в Вашем ответе XML, я видел дроссель браузеров на тех. Так, xsi:type, вероятно, не собирается работать на Вас, никакие чрезмерно сложные XML-схемы.

REST имеет тенденцию иметь лучшую производительность также. Требования ЦП кода, генерирующего ответы REST, имеют тенденцию быть ниже, чем, что показывают платформы SOAP. И, если у Вас есть свои утки поколения XML, выстроенные в линию на стороне сервера, можно эффективно передать XML потоком клиенту. Так, предположите чтение строк курсора базы данных. Поскольку Вы читаете строку, Вы форматируете ее как элемент XML, и Вы пишете что непосредственно в сервисного потребителя. Таким образом, Вы не должны собирать все строки базы данных в памяти прежде, чем начать писать Ваш вывод XML - Вы читаете и пишете одновременно. Изучите новые механизмы шаблонной обработки или XSLT, чтобы заставить потоковую передачу работать на REST.

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

Мой процесс принятия решений следующие: если я хочу, чтобы мой сервис был легко оснащен потребителями, и сообщения, которые я пишу, будут medium-to-small-ish (10 МБ или меньше), и я не возражаю записывать некоторые дополнительные циклы ЦП на сервере, я иду с SOAP. Если я должен служить Ajax на веб-браузерах, или мне нужна вещь передать потоком, или мои ответы являются гигантскими, я иду REST.

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

40
ответ дан Tim Cooper 7 June 2019 в 07:30
поделиться
  • 1
    Спасибо за справку! Все работает правильно. Я использовал Приложение. AddMessageFilter с suscess. Я сцепляю события от нажатия мыши и создаю C# MouseEventHandler для диспетчеризации события на уровне WinForm к другим средствам управления. – Gustavo Cardoso 30 April 2009 в 12:34

Это детально.

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

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

9
ответ дан cynicalman 7 June 2019 в 07:30
поделиться
  • 1
    @cHao - Я wouldn' t рассчитывают на это, но это все еще остается долговременной оценкой. – Christian 11 July 2010 в 21:23

SOAP в настоящее время имеет преимущество лучших инструментов, где они генерируют много шаблонного кода для обоих уровень служб, а также генерирующиеся клиенты от любого данного WSDL.

REST более прост, может быть легче поддержать, в результате лежит в основе веб-архитектуры, допускает лучшую видимость протокола и, как доказывали, масштабировался в размере самого WWW. Некоторые платформы там помогают Вам создать сервисы REST, как Ruby on Rails, и некоторые даже помогают Вам с пишущими клиентами, как Услуги передачи данных ADO.NET. Но по большей части, поддержке инструмента недостает.

44
ответ дан Mark Cidade 7 June 2019 в 07:30
поделиться
  • 1
    Ohh, уверенные, существуют пути, I' ll сообщают, как только я дома. прямо сейчас, I' ve должен работать. – Aman Alam 21 February 2011 в 13:18

REST является существенно различной парадигмой от SOAP. Хорошее чтение на REST может быть найдено здесь: , Как я объяснил REST своей жене .

, Если у Вас нет времени для чтения его, вот короткая версия: REST является определенным сдвигом парадигмы путем фокусировки на "существительных" и ограничения количества "глаголов", можно обратиться к тем существительным. Единственные позволенные глаголы, "получают", "помещают", "отправляют" и "удаляют". Это отличается от SOAP, где много различных глаголов могут быть применены ко многим различным существительным (т.е. многим различным функциям).

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

На практике, хотя большая часть из этого отпадает, и REST обычно просто обращается к простым Запросам HTTP, которые возвращают результаты в JSON, в то время как SOAP является более сложным API, который связывается путем передачи XML вокруг. У обоих есть их преимущества и недостатки, но я нашел, что, по моему опыту, REST обычно является лучшим выбором, потому что Вам крайне редко нужна полная функциональность, которую Вы получаете от SOAP.

102
ответ дан franzlorenzon 7 June 2019 в 07:30
поделиться
  • 1
    +1 для включения информации о добавлении строки к AssemblyInfo.cs. Иначе log4net настройки в файле конфигурации приложения будут просто проигнорированы. – Mun 18 May 2012 в 14:28

REST является архитектурой, SOAP является протоколом.

Это - первая проблема.

можно отправить конверты SOAP в приложении REST.

сам SOAP является на самом деле довольно основным и простым, это - WSS -* стандарты сверху его, которые делают его очень сложным.

, Если Ваши потребители являются другими приложениями и другими серверами, существует большая поддержка протокола SOAP сегодня, и основы движущихся данных являются по существу щелчком мышью в современных IDE.

, Если Вашими потребителями, более вероятно, будут УСТЬЯ РЕКИ или клиенты Ajax, Вы, вероятно, захотите что-то более простое, чем SOAP, и более собственный клиенту (особенно JSON).

пакеты JSON, отправленные по HTTP, являются не обязательно архитектурой REST, это - просто сообщения к URL. Все совершенно осуществимые, но существуют ключевые компоненты остальным идиома. Легко перепутать два как бы то ни было. Но просто потому что Вы говорите, Запросы HTTP не обязательно означают, что у Вас есть архитектура REST. У Вас может быть приложение REST без HTTP вообще (ум, это редко).

Так, если у Вас есть серверы и потребители, которые "довольны" SOAP, стек SOAP и WSS может служить Вам хорошо. Если Вы делаете более специальные вещи и хотите лучше взаимодействовать через интерфейс с веб-браузерами, то некоторый более легкий протокол по HTTP может работать хорошо также.

198
ответ дан Will Hartung 7 June 2019 в 07:30
поделиться

Одна вещь, о которой не упоминалось, - это то, что конверт SOAP может содержать заголовки, а также части тела. Это позволяет использовать все возможности XML для отправки и получения внеполосной информации. REST, насколько мне известно, ограничивает вас заголовками HTTP и кодами результатов.

(ах, можете ли вы использовать файлы cookie со службой REST для отправки внеполосных данных типа «заголовок»?)

13
ответ дан 22 November 2019 в 23:55
поделиться

Большинство приложений, которые я пишу, являются серверными C # или Java, или настольными приложениями в WinForms или WPF. Этим приложениям, как правило, требуется более богатый сервисный API, чем может предоставить REST. Кроме того, я не хочу тратить больше пары минут на создание своего клиента веб-службы. Инструменты генерации клиента обработки WSDL позволяют мне реализовать своего клиента и перейти к добавлению бизнес-ценности.

Теперь, если бы я писал веб-сервис явно для некоторых вызовов javascript ajax, он, вероятно, был бы в REST; просто ради знания клиентских технологий и использования JSON. На мой взгляд, API-интерфейсы веб-сервисов, используемые из javascript, вероятно, не должны быть очень сложными, поскольку этот тип сложности, кажется, лучше обрабатывается на стороне сервера.

С учетом сказанного, существуют некоторые клиенты SOAP для javascript; Я знаю, что у jQuery он есть. Таким образом, SOAP можно использовать из javascript; просто не так хорошо, как служба REST, возвращающая строки JSON. Поэтому, если бы у меня была веб-служба, которую я хотел бы сделать достаточно сложной, чтобы она была гибкой для произвольного числа клиентских технологий и применений, я бы выбрал SOAP.

19
ответ дан 22 November 2019 в 23:55
поделиться

Я знаю, что это старый вопрос, но я должен опубликовать свой ответ - может быть, кому-то он будет полезен. Я не могу поверить, сколько людей рекомендуют REST вместо SOAP. Я могу только предположить, что эти люди не являются разработчиками или никогда не реализовывали службу REST любого разумного размера. Реализация службы REST занимает НАМНОГО больше времени, чем реализация службы SOAP. И, в конце концов, это тоже получается намного запутаннее. Вот причины, по которым я бы выбрал SOAP в 99% случаев:

1) Реализация службы REST занимает бесконечно больше времени, чем реализация службы SOAP. Для всех современных языков / фреймворков / платформ существуют инструменты для чтения в WSDL и вывода прокси-классов и клиентов. Реализация службы REST выполняется вручную и - получите это - прочитав документацию.Более того, при реализации этих двух сервисов вы должны делать «предположения» относительно того, что вернется через конвейер, поскольку нет реальной схемы или справочного документа.

2) Зачем все равно писать службу REST, которая возвращает XML? Единственное отличие состоит в том, что с REST вы не знаете типы, которые представляет каждый элемент / атрибут - вы можете реализовать его самостоятельно и надеетесь, что однажды строка не встретится в поле, которое, как вы думали, всегда было int. SOAP определяет структуру данных с помощью WSDL, так что это не проблема.

3) Я слышал жалобу, что с SOAP у вас есть «накладные расходы» SOAP Envelope. В наши дни, действительно ли нам нужно беспокоиться о нескольких байтах?

4) Я слышал аргумент, что с помощью REST вы можете просто вставить URL-адрес в браузер и просмотреть данные. Конечно, если ваша служба REST использует простую аутентификацию или нет. Например, служба Netflix использует протокол OAuth, который требует от вас подписывать и кодировать вещи, прежде чем вы даже сможете отправить свой запрос.

5) Зачем нам нужен «читаемый» URL для каждого ресурса? Если бы мы использовали инструмент для реализации службы, действительно ли нам важен фактический URL-адрес?

Нужно ли мне продолжать?

29
ответ дан 22 November 2019 в 23:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: