Обычный ASMX вообще не поддерживает WS-Security или любые другие расширения WS- *. Для их реализации вам необходимо использовать улучшения веб-служб Microsoft (WSE).
WSE - это решение с временным отключением, которое Microsoft реализовала на скорую руку, чтобы удовлетворить потребность веб-служб .NET в соответствии со спецификациями WS- *. WCF - это не просто обновление до этого, это полная замена . Из-за этого WSE (и впоследствии ASMX, если вы хотите использовать протоколы WS- *) официально является неподдерживаемым продуктом .
Итак, хочет ли ваше руководство начать новый проект с использованием официально неподдерживаемого продукта?
Вот все, что вы не получите с WSE:
Техническая поддержка. Возможно, кто-то из Stack Overflow может помочь вам, но Microsoft не может.
Исправлены ошибки. Интеграция Visual Studio с WSE 3.0 (последняя выпущенная версия) не работает в Visual Studio 2008. Она также не работает в Visual Studio 2005, если вы используете Vista x64 или Windows 7.
Новые функции. WCF предлагает улучшения производительности, протоколы REST, очереди сообщений, двоичную сериализацию по TCP / именованным каналам, службы данных WCF (Linq через веб-службы) и целый ряд новых возможностей. Вы никогда не получите ни одного из них с помощью WSE / ASMX.
Интеграция с Active Directory. О, конечно, это «работало» в WSE с использованием утверждения kerberos - очень и очень плохо. WCF настолько легко интегрируется с Active Directory, что по умолчанию он защищен .
Неисправности контрактов. Обработка исключений в WSE / ASMX brutal , все выглядит как SoapException
или ResponseProcessingException
. С помощью WCF вы действительно можете отправлять обратно типизированные исключения (ошибки) обратно клиенту.
Обратный звонок. Хотите начать длительную операцию на стороне клиента и получать уведомления о завершении / обновлении статуса с сервера? Жесткий - надеюсь, вам нравится писать циклы опроса.
Взаимодействие с новыми технологиями. Иногда вы можете заставить службу WSE 3 общаться с WCF или службой Java, но с некоторыми затруднениями, но не обязательно наоборот. И если вы используете версию WSE до 3.0, забудьте об этом. В отличие от этого, WCF смог поддержать Azure и MSMQ с несколькими тривиальными изменениями конфигурации.
Запуск нового проекта с использованием ASMX / WSE эквивалентен запуску нового проекта на платформе .NET 1.1. Ваш продукт будет «унаследован» до того, как будет написана первая строка кода.
Если ваше руководство понимает термин «устаревшие технологии», и я подозреваю, что они понимают, вы, возможно, захотите немного обойти это. Также "устарел". Также "не поддерживается".
WCF существует уже 4 года. Этого более чем достаточно для выявления серьезных проблем в дикой природе. Нет никаких оснований не доверять ей как технологии.
И действительно, WSE 3 был выпущен в конце 2005 года, так что он не намного старше, чем WCF! Нелогично доверять технологии 5-летней давности, а не технологии 4-летней давности, особенно когда 2 года назад была прекращена поддержка 5-летней технологии.