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

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

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

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

Sander 09.04.2010 13:04

Большинство разработчиков не используют необходимость для понимания всей конфигурации, и, кроме того, это радикально изменилось с появлением .NET 4.0.

John Saunders 20.06.2012 21:32

Я могу поручиться за то, что это крутая кривая обучения. WCF почти византийский. Я изучаю его около месяца и только начинаю понимать. Существует множество сложностей, связанных с различными методами безопасности, различными типами цифровых сертификатов и проверкой клиент / сервер. Есть много очень хороших видеоуроков. Взгляните на questpond.com. Я не могу припомнить, чтобы ASMX был таким утомительным, но WCF кажется, что он довольно мощный и стоит затраченных усилий.

Guru Josh 07.05.2014 19:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
34
3
11 393
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

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

Плюсы WCF:

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

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

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

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

Ответ принят как подходящий

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

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

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

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

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

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

WCF

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

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

Вместо

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

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

-1 за дезинформацию и необоснованное мнение. Я могу только предположить, что вы говорите о конфигурации, когда говорите, что WCF «многословен», и в этом случае вам следует начать использовать .NET 4.0 или 4.5. «Несовместимо с другими продуктами Microsoft» должно быть обосновано, если вы хотите, чтобы к вам относились серьезно. Но вы теряете всякое доверие, противопоставляя WCF и SOAP.

John Saunders 20.06.2012 21:31

@ Джон Сондерс, значит, ты меня троллишь без всякой причины. шиш парень. И нет, даже в net 4.0 wcf все еще наполовину испечен. В любом случае, WCF заблокирован поставщиком.

magallanes 21.06.2012 19:28

Вы явно не понимаете, о чем говорите. "Vendor locked" - явный бред. Вы можете исправить мое мнение, представив факты, а не разглагольствования.

John Saunders 21.06.2012 20:10

Вы можете использовать WCF разными способами: с помощью http / SOAP вы получаете wsdl для автоматической генерации клиентского кода с большинством технологий, что удобно, если ваша служба должна быть общедоступной. Для внутренних служб можно использовать net.tcp и даже MSMQ - вы можете заблокировать себя, если настаиваете на этом.

mbx 23.11.2012 18:07

Что я могу делать с WCF, чего не могу делать с SOAP ?.

magallanes 27.11.2012 20:36

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

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

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

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

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