Мыло - какой в этом смысл?
Я имею в виду, действительно, в чем смысл мыла?
веб-службы существуют уже некоторое время, и некоторое время казалось, что термины "мыло" и "веб-сервис" в значительной степени взаимозаменяемы. Однако мыло всегда казалось мне громоздким и сильно усложненным.
затем появился отдых, и вдруг веб-сервисы обрели смысл.
Как говорит Джоэл Спольски, дайте программисту URL REST, и они могут сразу начать играть с сервисом, выясняя это из.
SOAP запутывается за WSDLs и массово подробным XML, и, несмотря на то, что он основан на интернете, вы не можете сделать ничего такого простого, как доступ к службе SOAP с помощью веб-браузера.
Итак, суть моего вопроса:
- есть ли веские причины когда-либо выбирать мыло вместо отдыха?
- вы сейчас работаете с мылом? Было бы лучше, если бы интерфейс был отдых?
- я ошибаюсь?
11 ответов:
Как говорит Джоэл Спольски, дайте программисту URL REST, и они могут сразу начать играть с сервисом, выясняя это.
в то время как если бы служба имела четко определенный, машиночитаемый контракт, то программисту не пришлось бы тратить время на его выяснение.
(Не то, что WSDL / SOAP обязательно является примером хорошей реализации хорошо указанного контракта, но это было точкой WSDL)
первоначально мыло было простой протокол, который позволял добавлять заголовок к сообщению и имел стандартизированное сопоставление экземпляров объектов с XML-структурами. Размещение метаданных обработки в сообщении упростило код клиента и означало, что вы можете очень просто сохранять и помещать сообщения в очередь.
Я никогда не нуждался в деталях обработки заголовка, когда я построил SOAP services еще в 2001 году. Это был pre-WSDL, и тогда было нормально использовать GET для получения информации и запросов (не отличается от большинства приложений которые утверждают, что REST; REST имеет больше с точки зрения использования гиперссылок для обнаружения службы) и POST с полезной нагрузкой SOAP для выполнения действий. Те действия, которые создали ресурсы, возвращают URL-адрес созданного ресурса клиенту, и клиент может затем получить ресурс. Я думаю, что это тот факт, что WSDL позволил легко думать только с точки зрения RPC, а не действий, которые создают ресурсы, которые заставили SOAP потерять сюжет.
Как я вижу, мыло может быть более "гибким", но в результате это просто слишком сложно (вы упомянули WSDL, который всегда является камнем преткновения для меня лично).
Я get остальные. Это простой. Единственный недостаток, который я могу увидеть, заключается в том, что вы ограничиваете себя этими 4 основными действиями против одного ресурса, которые могут не совсем соответствовать тому, как вы просматриваете свои данные.
эта тема хорошо обсуждается в почему мыло считается толстых.
делая некоторые исследования, чтобы понять некоторые из ответов здесь (особенно Джон Сондерс) я нашел этот пост http://harmful.cat-v.org/software/xml/soap/simple Мыло более безумно, чем я думал...
точкой WSDL было автоматическое обнаружение. Идея заключалась в том, что вам не нужно было бы писать клиентский код, он был бы автоматически сгенерирован.
кстати. следующий шаг за WSDL - это Семантические Веб-Сервисы.
Если вам не нужны функции протоколов серии WS -*; если вам не нужны службы с самоописанием; если ваш сервис не может быть полностью описан как ресурсы, как определено протоколом HTTP; если вам не нравится создавать XML для каждого взаимодействия с сервисом и анализировать его впоследствии; тогда вам нужно SOAP.
в противном случае, конечно, используйте отдых.
был некоторый вопрос о ценности службы с самоописанием. Мое воображение меня подводит, когда речь заходит о том, как кто-то может не понять этого. Это за мой счет. Тем не менее, я должен думать, что любой, кто когда-либо использовал сервис намного сложнее, чем "Hello, world", знал бы, почему полезно, чтобы кто-то другой написал код, который принимает параметры, создает XML для отправки в службу, отправляет его, получает ответ, а затем превращает его обратно в объекты.
теперь, я полагаю, что это может быть не нужно при использовании RESTful службы; по крайней мере не с помощью службы RESTful, которая не обрабатывает сложные объекты. Даже с относительно простой услугой, как http://www.earthtools.org/webservices.htm (который я использовал в качестве примера вызова службы RESTful), один из преимуществ от понимания структуры возвращаемых данных. Даже вышеупомянутая служба предоставляет XML-схему - к сожалению, она не описывает весь ответ. Учитывая, что схема все еще должна вручную обрабатывать XML, или же использовать инструмент для создания сериализуемые классы из схемы.
все это происходит для вас, когда служба описана в WSDL, и вы используете такой инструмент, как "добавить ссылку на службу" в Visual Studio или svcutil.exe-программа, или я-забыл-что-команда-в-затмении.
Если вы хотите примеры, начните с EarthTools услуги,и перейти к любым другим услугам с более сложными сообщениями.
кстати, еще одна вещь, которая требует самостоятельного описание описание шаблонов обмена сообщениями и протоколов, поддерживаемых службой. Возможно, это не требуется, когда единственным выбором являются http-команды через HTTP или HTTPS. Жизнь становится сложнее, если вы используете WS-Security и друзей.
Я считаю, что SOAP подходит наиболее подходящим образом, когда существует высокая вероятность того, что услуга будет потребляться корпоративным программным обеспечением (COTS). Из-за хорошо определенного контракта, используемого SOAP/WSDL, большинство пакетов COTS имеют встроенную функциональность для потребления таких услуг. Это может облегчить работу с инструментами BPM/workflow и т. д. чтобы просто использовать определенные службы без настройки. Помимо этого случая использования службы REST, как правило, является моей реализацией веб-службы goto для приложения.
Я думаю, что SOAP обращается к толпе Java и .net, которые могут быть более знакомы со старым CORBA и COM и менее знакомы с интернет-технологиями.
REST также имеет один существенный недостаток: существует очень мало указаний о том, как на самом деле реализовать такую систему. Вы найдете значительные различия в том, сколько публичных API RESTful было разработано. На самом деле многие нарушают ключевые аспекты REST (такие как использование GET для манипуляции или POST для извлечения), и есть разногласия по фундаментальным использования (Post и Get против пост/получить/поставить/удалить).
SOAP-это облегченная спецификация структурированного протокола на основе XML, которая будет использоваться при реализации служб . Он используется для обмена структурированной информацией в децентрализованной, распределенной среде. SOAP использует XML-технологии для обмена информацией по любому протоколу транспортного уровня. Он не зависит от какой-либо конкретной модели программирования и другой семантики конкретной реализации. Более подробно о XML SOAP Messaging Framework
сообщения на основе XML рамки 1) расширяемый: простота остается одной из основных целей дизайна SOAP. SOAP определяет структуру связи, которая позволяет использовать такие функции, как безопасность, маршрутизация и надежность будет добавлена позже в виде многоуровневых расширений
2) Интер операбле: мыло можно использовать над любым транспортным протоколом как ТКП, хттп, СМТП. SOAP обеспечивает явную привязку сегодня для HTTP.
3) независимый: мыло учитывает любую программируя модель и не связано для удаленного вызова процедур(RPC). SOAP определяет модель для обработки отдельных односторонних сообщений. SOAP также позволяет использовать любое количество шаблонов обмена сообщениями (MEP) .Узнайте больше о мыло