Веб-сервисы на основе документов или RPC - PullRequest
18 голосов
/ 08 августа 2008

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

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

Ответы [ 3 ]

30 голосов
/ 08 августа 2008

Документ по сравнению с RPC - это вопрос, только если вы используете SOAP Web Services, для которых требуется описание сервиса ( 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 превосходит.

4 голосов
/ 05 сентября 2008

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

1 голос
/ 12 августа 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...