Веб-службы на основе документов или RPC

Мне кажется, что на практике предпочтительны веб-службы, основанные на документах - это опыт других людей? Их легче поддерживать? (Я заметил, что SharePoint использует Any в качестве «типа документа» в своем интерфейсе WSDL, я думаю, это делает его основанным на документе).

Кроме того, предлагают ли люди услуги типа WSDL и Rest для одной и той же функциональности? WSDL популярен для генерации кода, но для внешних интерфейсов, таких как PHP и Rails, они, кажется, предпочитают отдых.

Ответов (3)

Решение

Документ по сравнению с RPC - это вопрос только в том случае, если вы используете веб-службы SOAP, для которых требуется описание службы ( WSDL ). Веб-службы RESTful не используют WSDL, потому что с его помощью нельзя описать службу, и создается впечатление, что REST проще и понятнее. Некоторые люди предложили WADL как способ описания служб REST.

Такие языки, как Python, Ruby и PHP, упрощают работу с REST. WSDL используется для генерации кода C# (прокси веб-службы), который можно легко вызвать из статического языка. Это происходит, когда вы добавляете ссылку на службу или веб-ссылку в Visual Studio.

Предоставляете ли вы услуги SOAP или REST, зависит от вашей аудитории. На ваш выбор влияет то, будут ли эти услуги использоваться через Интернет или только внутри вашей организации. SOAP может иметь некоторые функции (стандарты WS- *), которые хорошо работают для B2B или внутреннего использования, но не подходят для интернет-сервиса.

Документ / литерал по сравнению с RPC для служб SOAP описаны в этой статье IBM DevelopWorks . Документ / литерал обычно считается лучшим для использования с точки зрения взаимодействия (от Java до .NET и т. Д.). Что касается того, легче ли поддерживать, это зависит от ваших обстоятельств. Лично я считаю, что люди склонны усложнять эти вещи, чем они должны быть, и более простой подход REST лучше.

Как уже упоминалось, лучше по возможности выбирать литерал документа, а не кодировку RPC. Верно, что старые библиотеки java (Axis1, Glue и другие доисторические вещи) поддерживают только кодировку RPC, однако в сегодняшних самых современных библиотеках Java SOAP это просто не поддерживается (например, AXIS2, XFire, CXF). Поэтому старайтесь предоставлять службу с кодировкой RPC только в том случае, если вы знаете, что вам нужно иметь дело с потребителем, который не может сделать лучше. Но опять же, может быть, просто XML RPC может помочь в этих устаревших реализациях.

Ответ BiranLy отличный. Я просто хотел бы добавить, что document-vs-RPC также может сводиться к проблемам реализации. Мы обнаружили, что Microsoft предпочитает документы, в то время как наши библиотеки на основе Java основаны на RPC. Что бы вы ни выбрали, убедитесь, что вы знаете, что подумают и другие потенциальные клиенты.