Мы только что закончили совершенно новый проект, используя WCF вместо ASMX Web Services в первый раз. Мы ОЧЕНЬ довольны результатами, но знаем, что была крутая кривая обучения. Тем не менее, мы чрезвычайно довольны общими результатами и знаем, что это основа для всего, что Microsoft делает в будущем, и оно того стоило: бородавки и все такое.
Быстрые преимущества, которые МЫ получили НАД ASMX :
1) Для внутренних (за брандмауэром) вызовов между сервисами мы используем привязку net: tcp, которая намного быстрее, чем SOAP
2) Мы включили как конечную точку net: tcp, так и конечную точку «web» в одном сервисе только с обновлением файла конфигурации (без изменений кода)
3) Нам удалось создать веб-сервисы RESTful с поддержкой AJAX, используя только изменения конфигурации и уже встроенный DataContractJsonSerializer. Чтобы сделать это иначе, нам пришлось бы написать обработчик HTTP (ashx) и обработать большую часть сериализация Json и разбор URL вручную.
4) Поскольку наш сайт нуждается в масштабировании для оптимизации производительности и стабильности, мы рассчитываем перейти на использование структуры обмена сообщениями на основе MSMQ, которая является асинхронной и гарантированной и участвует в транзакциях; WCF обеспечивает привязку MSMQ, которая требует минимального изменения кода в наших службах - просто укажите обновления и настройте MSMQ правильно с существующими службами (и добавив атрибуты для границ транзакций).
НО ВНИМАНИЕ: Действительно инвестируйте в изучение этой (купите синюю книгу O-Reily и пройдите через нее). Существуют такие вещи, как изменение имен аргументов во время разработки, которые на самом деле не нарушают ссылки на службы, но приводят к передаче пустых аргументов (встроенная обработка перекоса версий), моделям размещения (Windows Service и IIS) и созданию экземпляров. Модели и FaultException для всех ДЕЙСТВИТЕЛЬНО понимают. Мы не входили, и у нас были некоторые боли. Но мы пахали вперед и ОЧЕНЬ довольны нашими знаниями, гибкостью и возможностями роста, которых мы больше не привязываем к ASMX!