Веб-сервис, использующий Axis 2: параметры сложного или простого типа? - PullRequest
2 голосов
/ 03 февраля 2009

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

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

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

public String insertPerson(Person person);

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

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

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

Fred

Ответы [ 2 ]

3 голосов
/ 03 февраля 2009

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

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

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

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

0 голосов
/ 03 февраля 2009

Хороший фреймворк Web Services сможет понять сложный тип. Некоторая настройка может быть необходимой. Axis2 может справиться с этим.

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

...