Мы используем конечные точки SOAP и REST для наших служб WCF.Что для нас будет означать веб-API ASP.NET? - PullRequest
2 голосов
/ 11 марта 2012

В наших службах мы настраиваем несколько конечных точек, что позволяет нам публиковать одинаковые интерфейсы для клиентов SOAP 1.1 и 1.2 и HTTP-клиентов, использующих либо XML, либо JSON. Теперь, когда команда WCF REST была объединена с командой ASP.NET для создания веб-API, что это будет значить для нас в будущем? Будет ли поддерживаться предоставление интерфейсов WCF в качестве служб XML / JSON? Должны ли мы переместить конечные точки REST в среду Web API? Это будет последняя смена стека MS REST?

Ответы [ 2 ]

3 голосов
/ 11 марта 2012

Чтобы ответить на этот вопрос, вам нужно иметь небольшую историю веб-API ASP.NET.

Первоначально веб-API ASP.NET это был WCF Web API , проектв Codeplex расширение WCF для упрощения поддержки службы в стиле REST.WCF был полностью построен на SOAP в качестве основного типа обмена сообщениями, поэтому использование HTTP в качестве чего-либо другого, кроме протокола транспортного уровня, требовало другого подхода, с другим набором атрибутов и, как правило, плохо сочеталось с остальной частью инфраструктуры.

Веб-API WCF расширял инфраструктуру WCF всеми способами, необходимыми для поддержки HTTP как механизма транспорта уровня приложения.Он внедрял маршрутизацию запросов на основе URI ресурса, динамическое форматирование в соответствии с заголовками Accept и другие вещи, которые ранее отсутствовали в WCF.

Однако во время разработки стало ясно, что эти технологии уже существуют.в .NET, в стеке MVC.Таким образом, было принято решение, что вместо двух конкурирующих наборов технологий они передают работу команде ASP.NET MVC, и на свет появился ASP.NET Web API .


Если вы выполняете службу в стиле REST, веб-API ASP.NET гораздо лучше подходит для ваших нужд, чем среда WCF.Команда WCF не будет продвигать свою поддержку архитектуры в стиле REST;эти функции инфраструктуры WCF эффективно включены в веб-API , где он находит более естественное соответствие .

Следует ли переписать свои службы для использования нового веб-API?Ну, REST-функции WCF не собираются внезапно перестать работать.Вы должны рассмотреть этот шаг только в том случае, если он предоставляет вам некоторые функции, к которым вы стремитесь (например, динамический выбор формата контента), или если вы хотите постоянно разрабатывать свой API (поскольку Web API значительно проще в использовании, чем WCF).

3 голосов
/ 11 марта 2012

Хороший вопрос.Я не работаю на Microsoft, и у меня нет никакой внутренней информации, но я понимаю, что WCF сможет раскрывать XML и JSON навсегда.Фактически, если вы просто выставляете конечные точки JSON или XML, вы не выполняете REST.На самом деле вопрос заключается в том, используете ли вы HTTP-глаголы (DELETE, PUT, POST, GET) как часть вашего API или вы просто предоставляете методы, которые эквивалентны вашим методам SOAP.Если вы используете HTTP-глаголы, это может быть хорошей долгосрочной стратегией для переноса части REST в WebAPI.Если это не так, то вы можете с радостью использовать WCF (давайте расскажем своим клиентам, что вы используете REST по маркетинговым соображениям, для маркетинга в любом случае это просто модное слово).

Если вы используете глаголы HTTP, это нечто сложно иметь и WCF, и WebAPI.Все, что вам нужно сделать, это удалить всю логику из самой службы и представить ее как методы бизнес-уровня.Тогда оба ребенка из служб могут использовать эти методы, вызывать их соответствующим образом и формировать результаты.

...