Должен ли я вообще поддерживать что-либо, кроме RESTful HTTP? - PullRequest
1 голос
/ 14 февраля 2009

Я разрабатываю API на основе WCF для программного обеспечения CRM моей компании. В будущем он будет использоваться для разработки приложений на нескольких платформах. Я знаю, что WCF предоставляет транспорты именованных каналов, TCP и HTTP, но стоит ли мне беспокоиться о сложности поддержки всех трех, когда все, кажется, использует RESTful HTTP в наши дни?

Ответы [ 5 ]

8 голосов
/ 15 февраля 2009

REST - это архитектурный стиль Интернета, а не только XML-файлы через htttp без SOAP.

WCF - это фреймворк с единственной целью в жизни - абстрагировать разработчиков от базовой платформы / протокола / стека спецификаций. WCF REST был плохим дополнением к инструментарию, позволяющему вам предоставлять сервисы POX.

RESTfulness требует распространения, отсутствия сеанса, проектирования пользовательских типов носителей или повторного использования существующих и многих других свойств, о которых вам нужно подумать. Разработка архитектуры REST так же важна для xml ove rhttp, как и разработка SOA для создания мыльной оболочки.

1 голос
/ 17 февраля 2009

Вы задали два разных вопроса, не осознавая этого.

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

Второй вопрос: какой стиль веб-службы HTTP мне следует использовать? Должен ли я принять WS - * стек, XML-RPC шаблон, обычный старый XML (POX) или RESTful подход ? Это более сложный вопрос.

WCF упрощает стили ws- * и XML-RPC. Стиль POX веб-сервиса немного сложнее настроить с помощью WCF. Создать действительно RESTful-сервис с использованием WCF довольно сложно - вам нужно понять основы работы WCF и отключить некоторые «магические» действия, которые он выполняет для вас.

Я думаю, что стиль архитектуры RESTful прост, проверен и является хорошим выбором. Но сложно настроить WCF для его правильной поддержки. Если вы привязаны к WCF в качестве своей платформы, рассмотрите возможность использования одного из других стилей.

1 голос
/ 14 февраля 2009

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

0 голосов
/ 14 февраля 2009

В общем, ваши компоненты WCF не должны быть связаны ни с чем, включая транспорт, безопасность и другие протоколы и технологии. Конечная цель (возможно, пока не на 100% возможная) состоит в том, чтобы один раз написать свой интерфейс и реализацию сервиса, а затем использовать их в любой среде по любому протоколу с любым видом безопасности. Все это может быть определено в ваших файлах конфигурации и в ваших клиентских приложениях.

0 голосов
/ 14 февраля 2009

Я давно не смотрел на Indigo, но, насколько я помню, есть некоторые вещи, которые RESTful HTTP не поддерживает и не имеет аналогов, например WS-Transactions, WS-Security и пара других. Если вам это нужно, вам придется переключиться на SOAP. Если нет, то REST должен быть достаточно хорош для вашей компании.

Там также вопрос производительности. SOAP, закодированный как двоичный XML через TCP или предложения именованных каналов, будет немного быстрее, чем текстовый XML по HTTP.

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

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

...