Веб-службы - WCF против ASMX («Стандарт»)

Я работаю над новым проектом. Есть ли какие-то преимущества в использовании веб-службы WCF по сравнению с обычной устаревшей веб-службой?

Visual Studio предлагает шаблоны для обоих. Какие отличия? За и против?

Ответов (7)

Решение

Что такое «обычная старомодная веб-служба»? Служба ASMX или вы тоже используете WSE? Сервисы ASMX по своей природе несовместимы, не поддерживают спецификации WS- *, а ASMX - это технология, которая очень быстро устаревает. Службы WSE (улучшения веб-служб) ДОЛЖНЫ добавить поддержку WS- * и могут быть сделаны для обеспечения взаимодействия, но WCF предназначен для замены WSE, поэтому вам следует потратить время на его изучение. Я бы сказал, что если ваше приложение не является быстрым и грязным, вы получите огромную гибкость и в конечном итоге получите лучший дизайн, если выберете WCF. У WCF действительно есть кривая обучения, выходящая за рамки атрибута [WebMethod], но кривая обучения, на мой взгляд, чрезмерно преувеличена, и она является экспоненциально более мощной и перспективной, чем унаследованные службы ASMX.

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

Вот сравнение между ними.

Плюсы самостоятельной работы:

  • Нет кривой обучения
  • Очень гибкий

Плюсы WCF:

  • В долгосрочной перспективе стоит меньше времени
  • Переключайте протоколы без программирования

Недостаток WCF: имена некоторых статических свойств могут быть довольно длинными ...

Подводя итог: WCF позволяет вам сосредоточиться на программировании, но вам нужно сначала изучить его ;-)

Pro для WCF: вам не нужен веб-сервер (например, IIS). На самом деле вам не нужна серверная ОС.

По моему опыту

WCF

Работать с ним абсурдно многословно, он не совсем совместим с другими продуктами Microsoft и, конечно же, не получил широкого распространения за пределами мира Microsoft.

Но моя основная проблема в том, что он нестабилен, имеет тенденцию к сбою (в некоторых ситуациях) и требует настройки, прежде чем его можно будет использовать.

Вместо

SOAP (также известный как стандартный веб-сервис), он работает, с ним легко работать и он широко совместим (Java-JAX принимает его без каких-либо изменений).

Добавление аутентификации в SOAP может быть немного сложным, но не невозможным.

Если ваш проект использует фреймворк 4.0, почему бы вам не попробовать WebApi, который легко понять и использует соглашение, а не конфигурацию.

Это отличный способ создания приложений со сверхбыстрыми интерфейсами.

Посмотрите видеоролики о начале работы от MS, они произошли от служб данных WCF.

http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api

Мне нравится тот факт, что создание служб WCF позволяет легко отделить службу от реализации. Вы можете написать свою службу, а затем разместить ее в IIS, консольном приложении или службе Windows; вы также можете общаться с ним через HTTP, net TCP и т. д.

Модульные тесты внедрения и взаимодействия ваших сервисов сделать проще!