Веб-сервисы - WCF против ASMX ("Стандарт")

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

Visual Studio предлагает шаблоны для обоих. Какие есть отличия? Плюсы и минусы?

7 ответов

Решение

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

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

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

Плюсы делать все самостоятельно:

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

Плюсы WCF:

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

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

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

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

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

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

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

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

Посмотрите на начало видео от MS, он эволюционировал от служб данных WCF.

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

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

WCF

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

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

Вместо

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

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

Другие вопросы по тегам