Веб-служба с использованием Axis 2: параметры сложного или простого типа?

Вопрос специализации:

Параметры стиля OO и параметры типа

Что делать, если вы хотите определить операцию веб-службы? Чтобы параметры передавались как сложные типы, подобные этому

public String insertPerson(Person person);

кажется довольно крутым, поскольку вы можете изменить определение Person без изменения определения интерфейса. Но что, если другой клиент WS, реализованный на C/C++ (например, с помощью gsoap или axis2c), использует это определение. Может ли возникнуть проблема с доступом к веб-службе, реализованной с использованием Axis2 в Java? Может быть, более безопасно использовать простой параметризованный подход:

public String insertPerson(long id, String name, String personalId);

Я не совсем уверен в этом. Что вы думаете?

Фред


person ferdy    schedule 03.02.2009    source источник


Ответы (2)


Я решительно предпочитаю первый подход.

Но имейте в виду, что изменение типа Person действительно меняет интерфейс. Интерфейс (соглашение о вызовах,...) веб-сервиса определяется WSDL и XML-схемой, которую он включает (или ссылается). Если вы измените любой из них, вы измените интерфейс своего веб-сервиса.

Если вы посмотрите на это исключительно с точки зрения Java, то вы должны относиться к нему так, как будто класс Person (и любой другой класс, на который он ссылается!) является частью интерфейса веб-службы!

Хорошо то, что вы можете вносить совместимые изменения в класс Person (или, если быть более точным, в сложный тип/элемент, представленный классом Person), не нарушая работу старых клиентов. Хорошим примером является добавление необязательного элемента или атрибута. Новые клиенты могут использовать его, а старые клиенты не узнают об этом, но не сломаются (поскольку сервер не обеспечивает его существование).

person Joachim Sauer    schedule 03.02.2009

Хорошая структура веб-сервисов сможет понять сложный тип. Может потребоваться некоторая настройка. Axis2 с этим справляется.

Обычно я предпочитаю параметризованный подход, особенно если количество параметров невелико (не более 4). Его преимущество состоит в том, что файл WSDL и сгенерированное сообщение SOAP легче писать и читать. Это очень полезно для тестирования и отладки.

person kgiannakakis    schedule 03.02.2009