Преобразование ASMX в веб-службу WCF

Мне нужно обновить наши веб-сервисы, чтобы использовать WCF вместо ASMX. Если подписи веб-сервисов остаются прежними, будут ли существующие клиенты, которые уже звонят в службу ASMX, изменить что-либо на своем конце? Есть ли еще способ использования WCF, но не заставлять их ничего менять?

Ответ 1

Вариант 1:

  • Используя текущий ASMX WSDL, сгенерируйте клиент, используя svcutil.exe
  • Возьмите сгенерированный интерфейс и создайте службу WCF на основе этого интерфейса

    Выход: одна новая конечная точка WCF, настроенная с базовым HttpBinding. Клиентам необходимо обновить URL-адрес, по которому они отправляют сообщения.

Вариант 2:

  • Рефакторинг вашего кода ASMX. Переместите всю логику в отдельную DLL.
  • Создайте службу WCF и используйте логику в рефакторированной DLL.

    Выход: 2 конечных точки, один для ASMX и другой для WCF

Ответ 2

Если вы используете BasicHttpBinding для своей новой службы WCF и реализуете те же методы с той же структурой сообщений, существующие вызывающие абоненты должны иметь возможность звонить в эту новую службу WCF без каких-либо изменений с их стороны.

Также существует атрибут AspNetCompatibilityRequirements, чтобы обойти некоторую потенциальную проблему совместимости - см.