WCF поднимает планку или просто уровень сложности? - PullRequest
84 голосов
/ 08 сентября 2008

Я понимаю ценность трехкомпонентной модели сервис / хост / клиент, предлагаемой WCF. Но это только я или кажется, что WCF взял что-то довольно прямое и прямое (модель ASMX) и сделал из этого беспорядок?

Есть ли альтернатива использованию шага командной строки SvcUtil назад во времени для создания прокси? С сервисами ASMX тестовый жгут был предоставлен автоматически; Есть ли хорошая альтернатива сегодня с WCF?

Я ценю, что материал WS * более тесно интегрирован с WCF, и надеюсь найти там некоторую отдачу от WCF, но, черт возьми, в противном случае я озадачен.

Кроме того, состояние книг, доступных для WCF, в лучшем случае ужасно. Юваль Лоуи, превосходный автор, написал хороший справочник О'Рейли «Программирование служб WCF», но он мало что делает (для меня в любом случае), чтобы научиться использовать WCF сейчас. Предшественником этой книги (и немного лучше организованным, но не очень, как учебное пособие) является Учебный WCF Мишеля Леру Бустаманте. У него есть хорошие места, но он устарел и его соответствующий веб-сайт пропал.

У вас есть хорошие справочные материалы по обучению в WCF, кроме того, что вы просто продолжаете искать Google?

Ответы [ 16 ]

61 голосов
/ 18 мая 2009

Хорошо, поехали. Во-первых, книга Мишеля Леру Бустаманте была обновлена ​​для VS2008. Сайт для книги не исчез. Это прямо сейчас, и у него есть тонна отличной информации WCF. На этом сайте она предоставляет обновленный код, совместимый с VS2008 для всех примеров в своей книге. Если вы заказываете у Amazon, вы получите перепечатку с обновлением.

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

Хотя вы все еще можете генерировать прокси-классы из опции «Добавить ссылку на службу», в этом нет необходимости. Все, что вам действительно нужно сделать, это скопировать интерфейс ServiceContract и сообщить своему коду, где найти конечную точку для службы, и все. Вы можете вызывать методы из сервиса с очень небольшим кодом. Используя этот метод, вы получаете полный контроль над реализацией. Независимо от метода, который вы выбрали для создания прокси-класса, Мишель показывает оба и использует оба в своей серии превосходных веб-трансляций на эту тему.

У Мишель есть тонны отличного материала, и я рекомендую вам проверить ее веб-сайт (ы). Вот несколько ссылок, которые были невероятно полезны для меня, когда я изучал WCF. Я надеюсь, что вы поймете, насколько сильным является WCF и насколько легко его реализовать. Кривая обучения немного крутая, но вознаграждение за ваши временные затраты того стоит:

Я рекомендую вам посмотреть хотя бы 1 веб-трансляцию Микеле. Она очень эффективный ведущий, и она, очевидно, невероятно хорошо осведомлена, когда дело доходит до WCF. Она отлично справляется с демистификацией внутренней работы WCF с нуля.

15 голосов
/ 11 декабря 2008

Обычно я использую Google, чтобы находить ответы на WCF, и обычно нахожусь в следующих блогах:

Блоги с ценными статьями WCF

Другие ценные статьи, которые я нашел

14 голосов
/ 08 декабря 2008

Мне трудно понять, когда я должен или буду использовать WCF. Зачем? Потому что я ставлю производительность и простоту на первое место в моем списке. Почему модель ASMX была настолько успешной, потому что она работала, и вы заставили ее работать быстро. А с VS 2005 и .NET 2.0 wsdl.exe выделял довольно хорошие и совместимые сервисы.

В реальной жизни у вас должно быть очень мало протоколов связи в вашей архитектуре. Это делает его простым в обслуживании. Если вам нужен доступ к унаследованным системам, напишите для них специальные адаптеры, чтобы они могли играть в прекрасном блестящем и красивом мире SOA.

13 голосов
/ 26 сентября 2008

WCF намного мощнее, чем ASMX, и расширяет его несколькими способами. ASMX ограничен только HTTP, в то время как WCF может использовать несколько протоколов для своего взаимодействия (при условии, что HTTP по-прежнему используется большинством людей, по крайней мере, для служб, которые должны взаимодействовать). WCF также легче расширять. По крайней мере, можно расширить его так, чтобы ASMX не мог быть расширен. «Легко» может растягивать его. =) * * Тысяча одна

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

6 голосов
/ 08 сентября 2008

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

4 голосов
/ 26 сентября 2008

VS2008 включает в себя пункт контекстного меню «Добавить справочник услуг», который создаст прокси-сервер для вас за кулисами.

Как упоминалось ранее, WCF предназначен не только для замены типов веб-сервисов ASMX, но и для обеспечения согласованной, безопасной и масштабируемой методологии для всех взаимодействующих сервисов, будь то через HTTP, tcp, именованные каналы или MSMQ. транспортирует.

Признаюсь, у меня есть другие проблемы с WCF (например, переписывание сигнатур методов при представлении службы поверх basicHTTP - см. здесь , но в целом я думаю, что это определенное улучшение

4 голосов
/ 08 сентября 2008

Я не вижу, чтобы это упоминалось достаточно часто, но вы можете по-прежнему реализовывать довольно простые службы с WCF, очень похожие на службы ASMX. Например:

[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class SimpleService
{
    [OperationContract]
    public string HelloWorld()
    {
        return "Hello World";
    }

}

Вам все еще нужно зарегистрировать конечную точку в файле web.config, но это не так уж и плохо.

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

3 голосов
/ 26 сентября 2008

Если вы используете VS2008 и создаете проект WCF, то при нажатии запуска / отладки вы автоматически получаете тестовый набор и можете добавить ссылку, не используя svcutil.

2 голосов
/ 06 мая 2014

WCF является заменой всех более ранних технологий веб-службы от Microsoft. Это также намного больше, чем то, что традиционно считается «веб-сервисами».

«Веб-службы» WCF являются частью гораздо более широкого спектра удаленной связи, предоставляемой через WCF. Вы получите гораздо более высокую степень гибкости и мобильности при работе в WCF, чем при использовании традиционного ASMX, поскольку WCF с самого начала предназначен для суммирования всех различных инфраструктур распределенного программирования, предлагаемых Microsoft. С конечной точкой в ​​WCF можно связываться так же легко через SOAP / XML, как и через TCP / двоичный, и изменить этот носитель - просто мод конфигурационного файла. Теоретически это уменьшает количество нового кода, необходимого при переносе или изменении бизнес-потребностей, целей и т. Д.

ASMX is older than WCF, and anything ASMX can do so can WCF (and more). По сути, вы можете видеть, что WCF пытается логически объединить все различные способы взаимодействия двух приложений в мире Microsoft; ASMX был только одним из этих многочисленных способов, и теперь он сгруппирован под зонтиком возможностей WCF.

Доступ к веб-службам возможен только через HTTP, и он работает в среде без состояний, где WCF является гибким, поскольку его службы могут размещаться в различных типах приложений. Распространенными сценариями размещения служб WCF являются IIS, WAS, Self-hosting, Managed Windows Service.

Основное отличие заключается в том, что веб-службы используют XmlSerializer. Но WCF использует DataContractSerializer, который лучше по производительности по сравнению с XmlSerializer.

В каких сценариях должен использоваться WCF

  • Безопасный сервис для обработки бизнес-транзакций. Сервис, который
  • предоставляет текущие данные другим, например, отчет о трафике или другие
  • служба мониторинга. Служба чата, которая позволяет двум людям
  • общаться или обмениваться данными в режиме реального времени. Приложение панели инструментов
  • , который запрашивает данные у одного или нескольких сервисов и представляет их в логическом
  • представление. Предоставление рабочего процесса, реализованного с использованием Windows Workflow
  • Фонд как услуга WCF. Приложение Silverlight для опроса
  • сервис для последних каналов данных.

Особенности WCF

  • Сервисная ориентация
  • Interoperability
  • Несколько шаблонов сообщений
  • Сервисные метаданные
  • Контракты на передачу данных
  • Безопасность
  • Несколько транспортов и кодировок
  • Надежные и поставленные в очередь сообщения
  • Надежные сообщения
  • Сделки
  • Поддержка AJAX и REST
  • Расширяемость

источник: основной источник текста

2 голосов
/ 11 декабря 2008

Мои первые мысли о WCF были точно такими же! Вот несколько решений:

  1. Запрограммируйте свой собственный уровень прокси / клиента, используя обобщенные значения (см. Классы ClientBase , Binding). Мне было легко работать, но трудно совершенствоваться.
  2. Использовать стороннюю реализацию 1 ( SoftwareIsHardwork мой любимый на данный момент)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...