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