Arhn - архитектура программирования

Размещение службы с помощью WCF из WSDL - SVCUtil создает подробные типы для методов

У меня есть файл WSDL из опубликованного веб-сервиса ASMX. Мне нужно создать фиктивный сервис, который имитирует реальный сервис в целях тестирования.

Из WSDL я использовал SvcUtil.exe для генерации кода. По-видимому, он также генерирует интерфейс на стороне сервера.

Проблема в том, что он генерирует очень короткие интерфейсы. Например, метод int Add(int, int) отображается в сгенерированном файле .cs как AddResponse Add(AddRequest). AddRequest и AddResponse имеют AddRequestBody и AddRequestResponse и так далее.

Проблема в том, что для реализации мне нужно создать экземпляры тела и ответа для каждого метода, даже если я просто хочу вернуть простой результат int.

Почему он не может правильно сгенерировать подпись метода? Есть ли лучший способ создания интерфейса / контрактов на стороне сервера WCF из WSDL?

21.02.2012

Ответы:


1

Описываемая вами структура сообщения вызвана двумя причинами:

  • лучшая совместимость между стеками веб-сервисов и их моделями программирования (RPC против обмена сообщениями);
  • гибкость для включения новых параметров в существующие веб-службы.

Вы не первый, кто пожалуется на это, или последний. Это стиль привязки WSDL, обычно называемый шаблоном обертки документа / литерала. Он создает документальные / буквальные веб-службы, а также поддерживает стиль программирования RPC. Это очень "взаимодействие с WS", так сказать ...

Профиль WS-I Basic указывает, что soap:body должен иметь только один дочерний элемент, и в данном случае это оболочка для имени вызываемой операции. Параметры вызова упакованы только в один элемент, что лучше всего, поскольку он более гибкий для последующих изменений. В случае WCF вы обычно получаете MessageContract с одним MessageBodyMember, который содержит все параметры.

По сути, вы видите результаты давних битв веб-сервисов.

Вот несколько дополнительных материалов по этой теме (и это только верхушка айсберга):

26.02.2012
  • Почему меня перенаправили на сайт продажи железных столов по первой ссылке? 20.06.2016
  • @AdrienBrunelat: Я думаю, что некоторые домены больше недействительны. Ссылки взяты 4 года назад 20.06.2016
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..